gpt4 book ai didi

c++ - 在类模板中定义变量模板

转载 作者:行者123 更新时间:2023-11-27 22:47:47 26 4
gpt4 key购买 nike

考虑这个最小的例子:

template<class X> struct foo;

template<>
struct foo<int>
{
template<class = void>
static constexpr int x = 0;
};

template<class T>
constexpr int foo<int>::x<T>;

需要最后两行,否则当使用 ODR 变量 x 时,我们将得到一个 undefined reference 。

虽然 gcc (6.2.1) 很乐意编译此代码,但 clang (3.9.0) 在最后一行失败并显示此神秘消息:

error: variable template partial specialization does not specialize any template argument; to define the primary template, remove the template argument list

哪个是正确的行为?

最佳答案

最后两行代码应该是:

template<class T>
const int foo<int>::x;

template<class T>
constexpr int foo<int>::x;

喜欢this

关于c++ - 在类模板中定义变量模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41238470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com