检查 C++ 版本

前几天遇到了 C++ 版本的问题,今天记录一下。

以下情况只在 GCC 下测试过,MSVC 和 Clang 可能会不同。

std::cout << __cplusplus << std::endl;
__cplusplus C++ 标准
199711 C++98
201103 C++11
201402 C++14
201703 C++17
202002 C++20
202100 C++23

不同版本的 gcc 可能会有不同的情况,比如在 gcc 8.3 上,没有 c++20,它会提示使用 c++2a, 然后输出的 __cplusplus 是 201709