Стандарт ISO 98/03 (раздел 14.3.1), похоже, запрещает использование тип с внутренней связью в качестве параметра шаблона. (См. Пример ниже.) Стандарт C ++ 11 этого не делает. G ++ - используя старый стандарт - разрешает это. Я неправильно понимаю стандарт 03, или g ++ просто позволяет этому слайду ?
namespace
{
struct hidden { };
}
template<typename T>
struct S
{
T t;
};
int main()
{
S<hidden> s;
return 0;
}