#include<iostream>
// class
template<typename A>
class Foo; // не делаем реализацию, чтоб нескомпилировалось
// instance
template<>
class Foo<int> // специализация
{
public:
static
int foo(int x)
{
return x + 1;
}
};
template<typename A>
A bar(A a) {
return Foo<A>::foo(a);
}
int main() {
int x = 1;
std::cout << bar<int>(x) << std::endl;
}
I2luY2x1ZGU8aW9zdHJlYW0+CgovLyBjbGFzcwp0ZW1wbGF0ZTx0eXBlbmFtZSBBPgpjbGFzcyBGb287IC8vINC90LUg0LTQtdC70LDQtdC8INGA0LXQsNC70LjQt9Cw0YbQuNGOLCDRh9GC0L7QsSDQvdC10YHQutC+0LzQv9C40LvQuNGA0L7QstCw0LvQvtGB0YwKCi8vIGluc3RhbmNlCnRlbXBsYXRlPD4KY2xhc3MgRm9vPGludD4gLy8g0YHQv9C10YbQuNCw0LvQuNC30LDRhtC40Y8KewpwdWJsaWM6CiAgICBzdGF0aWMKICAgIGludCBmb28oaW50IHgpCiAgICB7CiAgICAgICAgcmV0dXJuIHggKyAxOwogICAgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgQT4KQSBiYXIoQSBhKSB7CiAgICByZXR1cm4gRm9vPEE+Ojpmb28oYSk7Cn0KCmludCBtYWluKCkgewogICAgaW50IHggPSAxOwogICAgc3RkOjpjb3V0IDw8IGJhcjxpbnQ+KHgpIDw8IHN0ZDo6ZW5kbDsKfQ==