Пространства имён
Варианты
Действия

Альтернативная запись операций

Материал из cppreference.com
< cpp‎ | language
 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
категории значений
порядок вычисления
альтернативные представления
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 

В 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';
    %>
%>