#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;
}
これの何が問題なのですか?明示的なインスタンス化がなければ、
データ[3] = 4;明示的なインスタンス化は問題を解決しますが、プログラムは後で壊れます
std::cout << data.size() << std::endl;これは、静的クラス テンプレート メンバー
data
がインスタンス化されたことを意味します。