Почему 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
, являющимся членом типа шаблона, но это насколько я понимаю.