boost::proto::domain::as_expr —
A callable unary MonomorphicFunctionObject that specifies how objects are turned into
Proto expressions in this domain. The resulting expression object is suitable for storage
in a local variable.
Synopsis
// In header: <boost/proto/domain.hpp>
// A callable unary MonomorphicFunctionObject that specifies how objects are
// turned into Proto expressions in this domain. The resulting expression
// object is suitable for storage in a local variable.template<typename T>structas_expr:proto::callable{// typestypedefsee-belowresult_type;// public member functionsresult_typeoperator()(T&)const;};
Description
Унарный мономорфный объект, который определяет, как объекты превращаются в прото-выражения в этой области. Полученный объект выражения подходит для хранения в локальной переменной. В этом случае обычно предпочтительнее возвращать выражения по значению, а в случае объектов, которые еще не являются выражениями Прото, обернуть их по значению (если это возможно) в новое выражение терминала Прото. (Сравните это описание с описанием<proto::domain::as_child>.)
Объект функции<as_expr>превращает объекты в выражения Прото, если они еще не существуют, делая их терминалами Прото, удерживаемыми значением, если это возможно. Объекты, которые уже являются выражениями Прото, просто возвращаются по стоимости. Если<wants_basic_expr<Generator>::value>истинно, то пустьEбудет<proto::basic_expr>; в противном случае пустьEбудет<proto::expr>. Приведено значение l<t>типа<T>:
Если<T>не является типом выражения Прото, полученный терминал рассчитывается следующим образом:
В противном случае, пусть<A>будет тип<T>, лишенный cv-квалификаторов.
Then, the result of as_expr<T>()(t) is
Generator()(E<tag::terminal,
term< A > >::make(t)).
В противном случае результат<t>превращается в (непостоянное) значение.
as_expr public member functions
<
result_typeoperator()(T&t)const;
>
Параметры:
Объект для обертывания.
Статья Struct template as_expr раздела The Boost C++ Libraries BoostBook Documentation Subset Struct template domain может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.