MSVC 2010模板化崩溃编译器中的映射

时间:2012-04-11 12:03:58

标签: c++ class templates visual-c++ map

为什么以下代码会使编译器崩溃?

#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;
}

编译器中是否有错误或什么?

1 个答案:

答案 0 :(得分:1)

您正在尝试使用模板化变量,您只能拥有类模板或函数模板。如果它崩溃了编译器,那么<​​em> 是一个bug,但它不是有效的C ++。你可以做点什么

    class test{
    public:
        template <typename T>
        class Map {
        public:
            std::map<std::string, T> stuff;
        };
    };

代替。