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