根據17.7.3 [temp.expl.spec]段落5(N4659)模板<>爲一個構件枚舉
... Members of an explicitly specialized class template are defined in the same manner as members of normal classes, and not using the
template<>
syntax. The same is true when defining a member of an explicitly specialized member class. However,template<>
is used in defining a member of an explicitly specialized member class template that is specialized as a class template.
的E
的顯式特絕對不屬於的顯式特大膽的情況下,它仍然需要template<>
。這是爲什麼?
template<class T> struct A {
enum E : T;
};
template<> enum A<int>::E : int { eint };
我正在談論隱式實例化的類模板特化**成員的顯式特化。此外,你的代碼給我一個錯誤。 – b1sub
@ Il-seobBae:是的,但這不是你從標準中提到的那個段落所談論的。它是在討論一個明確專用的類模板,而不是一個明確專門化的成員,大膽的部分是在討論一個明確專用的成員類模板,這是完全不同的。 –
我不知道你在做什麼。那麼,在這種情況下哪個段落必須存在'template <>'?我的意思是,代碼不屬於你提到的情況,所以它不應該需要'template <>'。 – b1sub