静态数据成员的模板专用化

template specialization for static data member

本文关键字:专用 数据成员 静态      更新时间:2023-10-16

以下代码可以用MSVC 14.1编译,但不能用Clang 5.0.1编译。

template <typename T>
class C
{
public:
static int a[];
};
int C<int>::a[1] = { 1 };

Clang的错误信息是:

错误:模板专用化需要"template<>'

此代码是否符合C++标准?我在这里找到了相关的段落如下。

定义显式专用类模板的成员时在类的主体之外,语法模板<>未使用

这不是一个explicitly specialized class template(例如,如果您有一个完全专业化的C<Foo>(,因此本文不适用于您的代码。事实上,您确实需要template<>