我认为我的编译器理解C++11,但可能不理解。 与其在现有的混乱的源代码上尝试它,不如尝试编译一些简单的"hello world"级别的源代码片段,如果它确实编译没有错误,证明编译器正在将其读取为 C++11?
试试这个,
auto f = [](){};
或者使用右值引用编写一些代码。
尽可能短的东西:
[]{};
Is是一个没有参数列表的lambda表达式。
问题是编译器通常从一开始就不完全支持新标准。这意味着,它们可能支持一个 c++11 功能,但不支持另一个。
但是,就c++11 而言,我认为 VC++ 是唯一不完全支持它的主要编译器,即使您可能必须手动启用 c++11 模式。例如,对于 g++,您必须提供编译器标志 -std=c++11(或 -std=gnu++11) - 对于较新的版本(如 c++14)也是如此)。