Что это за улыбка-с-бородой выражение:""?
я наткнулась на следующую программу, которая компилируется без ошибок или даже предупреждений:
int main(){
<:]{%>; // smile!
}
что делает программа, и что это за смайлик-выражение?
4 ответа:
программа использует орграфы чтобы представить следующее:
[] {};
это лямбда-выражение, которое ничего не делает. Соответствующие символы имеют следующие эквиваленты:
<: = [ %> = }
хотя они, как правило, не нужны сегодня, орграфы полезны, когда на вашей клавиатуре нет определенных клавиш, необходимых для использования базового исходного набора символов C++, а именно графических. Комбинация символов, составляющих орграф, обрабатывается как единое целое знак. Это, в свою очередь, компенсирует любые недостаточно оборудованные клавиатуры или другое подобное оборудование или программное обеспечение.
программа использует орграфы, которые позволяют программировать C++ с клавиатурами (или текстовыми кодировками), которые могут не иметь символов, обычно используемых C++.
код разрешает это:
int main(){ []{}; // smile! }
int main(){ <:]{%>; // smile! }
это лямбда-выражение (лямбда-выражение является одним из C++11 функции) с помощью орграфы (оба орграфа и триграфы работают на C++):
[] {};
используя только орграфы:
<:]<%}; <:]<%%>; [:>{%>; // like my cubic hat? [:><%}; [:><%%>;
смешивая их с Триграфов:
<:??)<%??>; // popeye ??(:>{??>; // pirate