繁体   English   中英

未定义的静态constexpr引用

[英]Undefined reference to static constexpr

在此代码段中:

template <size_t N>
struct Foo {
   static constexpr std::array<char, N> arr{{0}};
   static const char *data() { return &arr[0]; }
};

template<>
constexpr std::array<char, 5> Foo<5>::arr;

int main()
{
   std::cout << Foo<5>::data() << std::endl;
}

使用gcc 5.2我得到了对Foo<5ul>::arr未定义引用,而clang 3.7给出了编译时错误:

Constexpr静态数据成员'arr'的声明需要初始化程序

有什么问题,如何在类声明之外定义static constexpr

外联定义与其他静态(非整数)成员相同,减去初始化:

template<size_t N>
constexpr std::array<char, N> Foo<N>::arr;

像其他静态成员一样,它位于标题中 - 就像类模板本身一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM