Мне попалась следующая программа, которая компилируется без ошибок и даже предупреждений:
int main(){
<:]{%>; // smile!
}
Что делает программа, и что это за выражение смайлика?
Мне попалась следующая программа, которая компилируется без ошибок и даже предупреждений:
int main(){
<:]{%>; // smile!
}
Что делает программа, и что это за выражение смайлика?
Ответы:
Это пустая лямбда с маскировкой орграфа. Нормальные лямбды не имеют бороды.
источник
Программа использует орграфы для представления следующего:
Это лямбда-выражение, которое ничего не делает. Соответствующие символы имеют следующие эквиваленты:
Хотя сегодня они обычно не нужны, орграфы полезны, когда на вашей клавиатуре отсутствуют определенные клавиши, необходимые для использования основного исходного набора символов C ++, а именно графических. Комбинация символов, составляющих орграф, обрабатывается как один токен. Это, в свою очередь, компенсирует любые недостаточно оснащенные клавиатуры или другое подобное аппаратное или программное обеспечение.
источник
Программа использует орграфы , которые позволяют программировать на C ++ с помощью клавиатур (или текстовых кодировок), которые могут не иметь символов, которые обычно использует C ++.
Код разрешает это:
источник
Это в основном лямбда-выражение (лямбда-выражение является одной из особенностей C ++ 11 ) с использованием орграфов (как орграфы, так и триграфы работают на C ++):
Использование только орграфов:
Смешивая их с триграфами:
источник