Просто пример кода [Не из реальной жизни]
// at file scope
template <typename T, typename U>
struct demo{};
template class demo<int, int>; // is the template keyword optional here?
Ключевое слово шаблона в строке 3 необязательно? Я не видел (часто) такого использования ключевого слова шаблона раньше. В какой части стандарта это разрешено?
EDIT
Я думаю, что в g ++ есть ошибка.
template <typename T, typename U>
struct demo{};
class demo<int, int>; // template keyword omitted
компилируется на g ++ (4.5.1), тогда как не работает на Comeau
"ComeauTest.c", line 5: error: specializing class "demo<int, int>" without
"template<>" syntax is nonstandard
class demo<int, int>;