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?