Четыре года спустя, еще один ответ.
Еще одно применение, которое я видел, - это когда вы работаете с языком C ++, но определяете свою семантику.Простой пример: Boost.Spirit.
Boost.Spirit, в частности Qi для синтаксического анализа, перегружает операторы на синтаксических анализаторах для обеспечения EBNF-подобного синтаксиса для указания произвольных объектов синтаксического анализатора.В частности, унарный оператор &
перегружен, чтобы предоставить парсер And-Predicate .
парсер And-Predicate (& a)
Description
Синтаксические предикаты утверждают определенный условный синтаксис, который должен быть выполнен перед оценкой другой продукции.Подобно семантическим предикатам, eps, синтаксические предикаты не потребляют никакого ввода.И-предикат, & a, является положительным синтаксическим предикатом, который возвращает совпадение нулевой длины, только если его предикат совпадает.
Пример использования:
Базовый пример предварительного просмотра: убедитесь, что последний символ является точкой с запятой, но не используйте его, просто посмотрите на следующий символ:
test_phrase_parser("Hello ;", lit("Hello") >> &lit(';'), false);
Короче говоря, унарный &
здесь не имеет никакого отношенияна указатели вообще;у него есть специфичная для домена семантика, которая применяется к объектам парсера Qi.