標準ライブラリヘッダ <ciso646> (C++20まで), <iso646.h>
From cppreference.com
このヘッダは元々C標準ライブラリの<iso646.h>でした。
互換性ヘッダで、C言語では代替演算子表記を定義しますが、これらはC++ではキーワードです。
これは、適合する実装では、このヘッダを含めても効果がないことを意味します。
[編集] 備考
古いコンパイラや非準拠のコンパイラでは、代替演算子表記を使用するにはこのヘッダを含める必要があるかもしれません。
<ciso646>はC++20で削除されました。対応する<iso646.h>はC++20でも利用可能です。
C++20以前では、<ciso646>を含めることは、他の効果を引き起こすことなく、実装固有のライブラリバージョンマクロの定義を取得するためのテクニックとして時々使用されました。C++20からは、この目的のために<version>ヘッダが追加されました。
このコードを実行
#include <ciso646> #ifdef _LIBCPP_VERSION #error Using LLVM libc++ #elif __GLIBCXX__ // Note: only version 6.1 or newer define this in ciso646 #error Using GNU libstdc++ #elif _CPPLIB_VER // Note: used by Visual Studio #error Using Microsoft STL #else #error Using an unknown standard library #endif
実行結果の例
main.cpp:7:2: error: Using Microsoft STL #error Using Microsoft STL ^ 1 error generated.