Namespaces
Variants

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

From cppreference.net
Standard library headers

Cet en-tête était à l'origine dans la bibliothèque standard C sous le nom de <iso646.h> .

En-tête de compatibilité, en C définit les représentations alternatives des opérateurs qui sont des mots-clés en C++.

Cela signifie que dans une implémentation conforme, l'inclusion de cet en-tête n'a aucun effet.

Notes

Dans les compilateurs anciens ou non conformes, l'utilisation des représentations alternatives des opérateurs peut encore nécessiter l'inclusion de cet en-tête.

<ciso646> est supprimé en C++20. Le <iso646.h> correspondant reste disponible en C++20.

Avant C++20, l'inclusion de <ciso646> était parfois utilisée comme technique pour obtenir les définitions des macros de version de bibliothèque spécifiques à l'implémentation sans causer d'autres effets. À partir de C++20, l'en-tête <version> a été ajouté à cet effet.

#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

Sortie possible :

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