【问题标题】:template specialization for static data member静态数据成员的模板特化
【发布时间】:2018-07-30 16:22:53
【问题描述】:

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

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

Clang 的错误信息是:

错误:模板特化需要'模板'

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

定义显式特化类模板的成员时 在类的主体之外,不使用语法模板

【问题讨论】:

  • 我比较关心static int a[];
  • 您能描述一下您的担忧吗?

标签: c++ templates


【解决方案1】:

这不是explicitly specialized class template(例如,如果您有一个完全专业的C&lt;Foo&gt;),因此该段落不适用于您的代码。实际上,您确实需要template&lt;&gt;

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    相关资源
    最近更新 更多