Naw*_*waz 1 c++ static templates datamember
C++ 03 Standard中的模板章节从以下内容开始:
一个模板定义了一类或函数.
template-declaration:
exportopt template < template-parameter-list > declaration
template-parameter-list:
template-parameter
template-parameter-list , template-parameter
该声明在模板声明应
- 声明或定义函数或类,或
- 定义成员函数,成员类或类模板的静态数据成员或嵌套在类模板中的类,或者
- 定义类或类模板的成员模板.
一个模板声明是一个声明.如果模板声明的声明定义了函数,类或静态数据成员,那么它也是一个定义.
因此,根据我的理解,阅读粗体文本是除了类-template和function-template之外,我们还可以定义静态数据成员模板.但我从未见过静态数据成员模板.究竟是如何定义的?我尝试了以下内容,但GCC不接受它(ideone):
template<typename T> struct X{};
template<typename T>
struct A
{
template<typename U> static X<U> data_member;
};
Run Code Online (Sandbox Code Playgroud)
所以我开始怀疑自己是否正确理解了报价.我到底错过了什么?或者我们如何定义静态数据成员模板呢?粗体文字是什么意思?
不,它指的是:
template<typename T> int A<T>::staticDataMember;
// ^~~~~~~~~~~~~~~~~~~~~~~~~~~ declaration
Run Code Online (Sandbox Code Playgroud)
如果A是类模板,如下所示
template<typename T>
struct A { static int staticDataMember; };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1522 次 |
| 最近记录: |