#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;
}
¿Qué pasa con esto? Sin instanciación explícita se rompe en instancia de instancia estática de C++ plantilla
data[3] = 4;La instanciación explícita resuelve el problema pero el programa se rompe después de
std::cout << data.size() << std::endl;lo que significa que la plantilla de clase estática memeber
data
se instancia.
¿Qué compilador? No creo que esto sea tu culpa. – Potatoswatter
Esto compila bien utilizando VS2010. – linuxuser27
Estoy usando vs2008 y de hecho compila, pero el programa se rompe en los datos de línea [3] = 4 – mrs