Автоматическое уничтожение статического объекта

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

7
задан bitmask 22 September 2011 в 13:44
поделиться