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?