Ленивые высказывания...
Выражения, представленные до сих пор, достаточно сильны, чтобы построить довольно сложные структуры. Мы представили ленивые функции и ленивых операторов. Как насчет ленивых заявлений? Во-первых, закуска:
Печать всего нечетного содержимого контейнера STL с использованием<std::for_each>all_odds.cpp:
std::for_each(c.begin(), c.end(),
if_(arg1 % 2 == 1)
[
cout << arg1 << ' '
]
);
А? Это действительно C++? Читайте в...
Да, это действительно C++. Приведенный выше примерный код максимально приближен к синтаксису C++. Этот стилизованный синтаксис C++ отличается от реального кода C++. Во-первых, это<if>. Во-вторых, блок использует квадратные скобки вместо привычных кудрявых брекетов.
![[Note]](/img/note.png) |
Note |
|
C++ в C++?
В то время какSpiritпытается имитировать EBNF на C++, Phoenix пытается имитировать C++ на C++!!!
|
![[Note]](/img/note.png) |
Note |
В отличие от ленивых функций и ленивых операторов, ленивые утверждения всегда возвращаются в пустоту. |
Вот еще несколько примеров с аннотациями. Код говорит сам за себя.