Namespaces
Variants

Standard library header <ciso646> (until C++20) , <iso646.h>

From cppreference.net
Standard library headers

Этот заголовочный файл изначально находился в стандартной библиотеке 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.