验证给定 C++ 编译器是否将源代码读取为 C++11 的快速简单代码是什么?
What's a quick simple bit of code to verify a given C++ compiler is reading source as C++11?
我认为我的编译器理解 C++11,但也许不理解。我可以尝试编译一些简单的 "hello world" 级别的源代码片段,而不是在存在错误的现有混乱源代码上尝试它,如果它编译没有错误,证明编译器正在读取它作为C++11?
试试这个,
auto f = [](){};
或者写一些带有右值引用的代码。
最短的可能:
[]{};
这是一个没有参数列表的 lambda 表达式。
问题是编译器通常不会从一开始就完全支持新标准。意思是,它们可能支持一个 c++11 特性,但不支持另一个。
但是,就 c++11 而言,我认为 VC++ 是唯一不完全支持它的主要编译器,即使您可能必须启用 c++ 11 模式手动。对于 g++ 你例如必须提供编译器标志 -std=c++11(或 -std=gnu++11)——对于像 c++14 这样的新版本也是如此。
我认为我的编译器理解 C++11,但也许不理解。我可以尝试编译一些简单的 "hello world" 级别的源代码片段,而不是在存在错误的现有混乱源代码上尝试它,如果它编译没有错误,证明编译器正在读取它作为C++11?
试试这个,
auto f = [](){};
或者写一些带有右值引用的代码。
最短的可能:
[]{};
这是一个没有参数列表的 lambda 表达式。
问题是编译器通常不会从一开始就完全支持新标准。意思是,它们可能支持一个 c++11 特性,但不支持另一个。
但是,就 c++11 而言,我认为 VC++ 是唯一不完全支持它的主要编译器,即使您可能必须启用 c++ 11 模式手动。对于 g++ 你例如必须提供编译器标志 -std=c++11(或 -std=gnu++11)——对于像 c++14 这样的新版本也是如此。