Альтернативная запись операторов
В C++ (и C) исходный код можно записывать любым 7-битным набором символов, который включает инвариантный набор символов ISO 646/ECMA-6. Тем не менее, несколько операций и знаков препинания C++ находятся за пределами кодировки ISO 646: { } [ ] # \ ^ | ~. Чтобы можно было использовать кодировки, где все или некоторые из этих символов отсутствуют, C++ определяет два вида альтернатив: дополнительные ключевые слова, которые соответствуют операциям, использующим эти символы, и специальные комбинации из двух или трёх ISO 646-совместимых символов, которые интерпретируются как один не-ISO 646-символ.
Альтернативные ключевые слова
Ниже представлены альтернативные варианты написания операций, определённые в стандарте C++ ключевыми словами.
| Основная | Альтернативная |
|---|---|
&&
|
and
|
&=
|
and_eq
|
&
|
bitand
|
|
|
bitor
|
~
|
compl
|
!
|
not
|
!=
|
not_eq
|
| || | or |
|=
|
or_eq
|
^
|
xor
|
^=
|
xor_eq
|
Совместимость с Си
Те же самые слова определены в языке программирования Си во включаемом файле <iso646.h> в виде макросов. Так как в C++ это ключевые слова, включение заголовка <iso646.h> или <ciso646> в С++ ничего не делает.
Диграфы и триграфы
Следующие комбинации из двух и трёх символов (диграфов и триграфов) допускаются для замены обычных символов:
| Основной | Диграф | Триграф |
|---|---|---|
{ |
<% |
??<
|
} |
%> |
??>
|
[ |
<: |
??(
|
] |
:> |
??)
|
# |
%: |
??=
|
\ |
??/
| |
^ |
??'
| |
| |
??!
| |
~ |
??-
|
Ключевые слова
and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq
Пример
В следующем примере показано, как использовать несколько альтернативных ключевых слов:
%:include <iostream>
int main(int argc, char *argv<::>)
<%
if (argc > 1 and argv<:1:> not_eq '\0') <%
std::cout << "Hello " << argv<:1:> << '\n';
%>
%>