Создание экземпляра статического члена шаблона C ++

#include <map>
#include <iostream>
template <typename T>
class A 
{
 static std::map<int, int> data;
public:
 A()
 {
  std::cout << data.size() << std::endl;
  data[3] = 4;
 }
};

template <typename T>
std::map<int, int> A<T>::data;

//std::map<int, int> A<char>::data;

A<char> a;

int main()
{
 return 0;
}

Что в этом плохого? Без явного создания экземпляра он прерывается на

 data[3] = 4; 
. Явное создание экземпляра решает проблему, но программа прерывается после
std::cout << data.size() << std::endl;
, что означает, что экземпляр статического элемента шаблона класса data был создан.
15
задан mrs 13 September 2010 в 22:44
поделиться