【发布时间】:2011-09-22 13:00:04
【问题描述】:
为什么 C++ 不创建/销毁模板类型的静态成员。
观察下面的例子:
#include <iostream>
struct Dump {
Dump() {
std::cout << "CTOR" << std::endl;
}
~Dump() {
std::cout << "DTOR" << std::endl;
}
};
template <typename T> struct X {
static Dump dump;
};
template <typename T> Dump X<T>::dump;
struct A : X<A> {
};
int main() {
A a;
return 0;
}
我希望在执行时看到字符串CTOR,后跟DTOR。虽然我没有。我在这里错过了什么?
这与 dump 是模板类型的成员有关,但据我所知。
【问题讨论】:
-
你在哪里实例化这些类型?
-
我真的必须这样做吗?反正
A是在main中实例化的,我来编辑一下。 -
@VJo:我试图省略对问题不重要的内容。当然我有一个
main,看看我的编辑(否则我可以构建一个可执行文件,现在可以吗?)。 -
嗯。你观察到什么行为?
-
模板
转储 X::dump;应该是模板 Dump X::dump;
标签: c++ templates static-members