为什么以下代码会使编译器崩溃?
#include <iostream>
#include <string>
#include <map>
class test{
public:
template <typename T>
std::map<std::string, T> stuff;
};
int main(int argc, char* argv[])
{
test peanuts;
return 0;
}
编译器中是否有错误或什么?
答案 0 :(得分:1)
您正在尝试使用模板化变量,您只能拥有类模板或函数模板。如果它崩溃了编译器,那么<em> 是一个bug,但它不是有效的C ++。你可以做点什么
class test{
public:
template <typename T>
class Map {
public:
std::map<std::string, T> stuff;
};
};
代替。