Standard library header <ciso646> (until C++20) , <iso646.h>
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.