Lambda函数无法在Visual Studio 2010中编译

aCu*_*ria 1 c++ visual-c++ visual-c++-2010 c++11

我更感兴趣的是知道它为什么不编译而不是修复代码.

致命错误C1001:编译器中发生内部错误.

int main()
{
    class MyClass
    {
    public:
        MyClass(const std::string & name)
            : name_(name) {}
        std::string name_;
    };

    auto creator = []() -> MyClass *
    {
        return new MyClass("Hello World");
    };

    MyClass * pMyClass = creator();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*las 6

致命错误C1001:编译器中发生内部错误.

每当您看到内部编译器错误时,您就会看到编译器本身的错误.基本上,编译器没有给出编译器错误; 它崩溃了.

在这些情况下,只要它们发生时就没有"为什么"(除非它耗尽了资源).或者至少,不是一个容易确定的.最好的办法是尝试重新排列代码以使编译器运行.

如果您不使用VC2010 SP1,请升级到Service Pack并再试一次.