Только что наступил на очаровательные C++ные грабли.
Оказывается, вот ТАК нельзя:
Код: Выделить всё
struct a {
template <typename t> static void f () {}; //Шаблонная статическая функция
};
template <typename t> //Шаблон, который я позже хочу параметризовать структурой a.
struct b {
static void f () {
t::f <int> (); //Здесь ошибка. Даже до параметризации не доходит.
//Нет способа объяснить ему, что f -- шаблонная функция, хоть убейся.
}
};
Компилятор не в состоянии понять, что t::f -- шаблон, угловых скобок не ждёт и дико обламывается.

