8

個々の C++0x/C++11 言語機能の存在を確認するにはどうすればよいですか? 私は、Clang がこれに適したシステムを持っていることを知っています。GCC、Visual Studio、Boost はどうですか? それを行う 1 つの方法は、コンパイラのバージョンを検出し、それをそのバージョンで導入された機能に関連付けることだと思います。しかし、それは面倒です。誰かがすでにそれを行っていますか?

4

2 に答える 2

4

boost configには、すべてではありませんが一部のC++11機能をチェックするスクリプトが付属しています。

各機能のマクロを含む構成ファイルを生成します。

于 2012-04-19T10:20:03.690 に答える
3

ビルドツールがこれに役立つ場合があります。

CMake にはtry_compile、コード サンプルがコンパイルされ、コンパイルの結果に基づいて変数が設定されるかどうかをテストできるコマンドがあります。

現時点では、autoタイピングなど、より一般的にサポートされている機能を使用しています。

多くの場合、Boost を使用して不足しているライブラリ機能を置き換えることができます。コンパイラとライブラリが更新され、バグが修正される数年間は、これが最適なオプションになる可能性があります。

GCC の C++11 機能の互換性リストはこちら: http://gcc.gnu.org/projects/cxx0x.html

次の警告に注意してください。

重要: C++11 に対する GCC のサポートはまだ実験段階です。一部の機能は初期の提案に基づいて実装されており、最終的な C++11 標準に一致するように更新された場合、下位互換性を維持する試みは行われません。

于 2012-04-19T10:23:32.003 に答える