Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板的静态成员变量是定义的还是专用的?_C++_Language Lawyer - Fatal编程技术网

C++ 模板的静态成员变量是定义的还是专用的?

C++ 模板的静态成员变量是定义的还是专用的?,c++,language-lawyer,C++,Language Lawyer,这涉及以下问题: 在下面的spinet中,最后一行是专门化、定义还是两者兼而有之 template<typename T> struct A { static const T s; }; template<typename T> const T A<T>::s = T(1); 模板 结构A{ 静态常数; }; 模板 常数ta::s=T(1); 对我来说,这似乎是一个定义,但gcc成功编译的问题让我质疑我的假设。这是定义 以下将是一个专门化 templ

这涉及以下问题:

在下面的spinet中,最后一行是专门化、定义还是两者兼而有之

template<typename T>
struct A {
  static const T s;
};

template<typename T>
const T A<T>::s = T(1);
模板
结构A{
静态常数;
};
模板
常数ta::s=T(1);
对我来说,这似乎是一个定义,但gcc成功编译的问题让我质疑我的假设。

这是定义

以下将是一个专门化

template <>
const int A<int>::s = 20;
查看它的定义

以下将是一个专门化

template <>
const int A<int>::s = 20;

我不是语言律师,但我想说最后一行是定义。为什么?因为我将模板专门化与指定类型的模板相关联,而在这里,情况并非如此。我猜最后一行只会将1传递给
T
类型的构造函数。我不是语言律师,但我想最后一行是定义。为什么?因为我将模板专门化与指定类型的模板相关联,而在这里,情况并非如此。我猜最后一行只会将1传递给
T
类型的构造函数。很高兴看到我没有发疯。谢谢。@Frank,不客气。很高兴我能帮助你保持清醒:)很高兴看到我没有发疯。谢谢。@Frank,不客气。很高兴我能帮助你保持清醒:)