template<typename T>
struct function
{
typedef T type;
template<typename U>
static void f() {}
};
template<typename T>
struct caller
{
int count;
caller(): count() {}
void operator()()
{
count++;
T::f<typename T::type>();
}
};
int main() {
caller<function<int> > call;
call();
return 0;
}
Мне кажется, это правильно, но компилятор выдает эту ужасную ошибку, которую я не могу понять:
prog.cpp: в функции-члене void caller :: operator () () ':
prog.cpp: 17: ошибка: ожидание `(' до '>' токен
prog.cpp: 17: ошибка: ожидаемое первичное выражение до ')' токен
Для вашего удобства, код размещен здесь -> http://www.ideone.com/vtP7G