LLVM/Clang 3.3リリース - C++11全実装バージョン

Clang 3.3 Release Notes


Clang 3.3がリリースされました。
このバージョンでは、C++11の継承コンストラクタ、thread_localキーワード、属性(noreturn、carries_dependency、それとalignas)が実装され、C++11の言語機能に完全対応しました。
carries_dependencyは、現在の実装は何もしないそうです。


また、C++1yの実験的サポートとして、2進数リテラルやdecltype(auto)に対応しています。


ヘッダファイルが存在するかどうかをチェックする(Clang)

Clangには、__has_include()という特殊なプリプロセス時判定機能があるようです。

// <atomic>ヘッダを持っているかチェックする
#if defined( __clang__ )
#if __has_include( <atomic> )
  // ...
#endif
#endif

Clangは、使用する標準ライブラリを切り替えられることもあって、コンパイラがClangであることと、コンパイラバージョンだけでは、ライブラリの機能が使えるかどうかわかりません。そういった状況でこの機能が有効なようです。


GCCでも話は出ているようです。
__has_include() macro implementation can be accepted in GCC?