Namespaces
Variants

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

From cppreference.net
Standard library headers

Este encabezado estaba originalmente en la biblioteca estándar de C como <iso646.h> .

Encabezado de compatibilidad, en C define representaciones alternativas de operadores que son palabras clave en C++.

Esto significa que en una implementación conforme, incluir este encabezado no tiene efecto.

Notas

En compiladores antiguos o no conformes, usar las representaciones alternativas de operadores aún puede requerir incluir este encabezado.

<ciso646> se elimina en C++20. El correspondiente <iso646.h> sigue disponible en C++20.

Antes de C++20, incluir <ciso646> a veces se utilizaba como una técnica para obtener definiciones de macros de versión de biblioteca específicas de la implementación sin causar otros efectos. A partir de C++20, se añadió el encabezado <version> para este propósito.

#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

Salida posible:

main.cpp:7:2: error: Using Microsoft STL
#error Using Microsoft STL
 ^
1 error generated.