静态数据成员的模板专用化
template specialization for static data member
以下代码可以用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<>
。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 数据成员SFINAE的C++17测试:gcc vs clang
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 如何在c++中定义以struct为数据成员的类中的构造函数
- 静态数据成员模板专用化的实例化点在哪里
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 使用指针访问数组中的对象数据成员
- 友元函数无法访问私有数据成员 (c++)
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- 将私有数据成员添加到野牛生成的类中
- 输入数据成员未按要求工作
- 二维矢量数据成员
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 静态数据成员的模板专用化
- 类型为专用数据成员的静态成员
- 专用于静态 constexpr 数据成员
- 访问专用数据成员
- 继承的静态函数能否访问重写的静态专用数据成员