我可以使用关键字struct
来专门化用关键字class
声明的模板类吗?最小,完整,可验证的示例:
template <class T>
class X {};
template <>
struct X<int> {}; // explicit specialization (full specialization)
template <class T>
struct X<X<T>> {}; // partial specialization
标准对此有何看法?感谢引用该标准并提供解释。
答案 0 :(得分:2)
这是有效的。
[temp.class] / 4:
在重新声明,部分专业化,显式专业化或 类模板的显式实例化, class-key 同意原始类模板声明 ([dcl.type.elab])。
[dcl.type.elab] / 3定义“实物同意”:
class-key 或enum关键字出现在 精加工类型说明符应与精加工类型说明符中的名称所引用的声明相符。 [...] 因此,在任何精心设计的类型说明符中,
enum
关键字应为 用于引用枚举([dcl.enum]),union
class-key 应用于引用联合([class]),并且class
或struct
class-key 必须用于引用一个类([class]) 使用class
或struct
class-key 声明。