The*_*ist 6 c++ static templates static-members
说我上课了
template <typename T>
class MyClass
{
static int myvar;
}
Run Code Online (Sandbox Code Playgroud)
现在,以下任务将会发生什么?
MyClass<int>::myvar = 5;
MyClass<double>::myvar = 6;
Run Code Online (Sandbox Code Playgroud)
根据标准会发生什么?我会有两个版本的MyClass :: myvar还是只有一个?
由于OP特别要求标准的报价,这是我的答案,其中包括标准的相关报价。
\n\n每个专业都有自己的副本,myvar这是有意义的,因为每个专业都有自己独特的类别。C++ 标准草案14.7 模板实例化和专业化第6段中说(重点是我的):
\n\n从模板实例化的每个类模板专业化都有其自己的静态成员副本。
\n\nRun Code Online (Sandbox Code Playgroud)\n\n[ Example:\n template<class T> class X {\n static T s;\n };\n template<class T> T X<T>::s = 0;\n X<int> aa;\n X<char*> bb;\nX 有一个 int 类型的静态成员,并且 X 有一个 char* 类型的静态成员。\xe2\x80\x94end\n 示例]
\n
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |