Reference Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 29. Boost.Proto
Включает в себя все Proto, кроме контекстов, трансформаций, отладочных утилит и Boost. Тип регистрации.
Заменить все узлы, хранящиеся по ссылке, узлами, хранящимися по значению.
namespace boost {
namespace proto {
template < typename Expr >
typename proto::result_of::deep_copy < Expr > :: type deep_copy ( Expr const & ) ;
namespace result_of {
template < typename Expr > struct deep_copy ;
}
namespace functional {
struct deep_copy ;
}
}
}
Содержит прото::eval()
оценщик выражения.
namespace boost {
namespace proto {
template < typename Expr , typename Context>
typename proto::result_of::eval < Expr , Context > :: type
eval ( Expr & , Context & ) ;
template < typename Expr , typename Context>
typename proto::result_of::eval < Expr , Context > :: type
eval ( Expr & , Context const & ) ;
namespace functional {
struct eval ;
}
namespace result_of {
template < typename Expr , typename Context> struct eval ;
}
}
}
namespace boost {
namespace proto {
template < typename Tag, typename Args, long Arity = Args :: arity >
struct basic_expr ;
template < typename Tag, typename Args, long Arity = Args :: arity > struct expr ;
template < typename Expr > struct unexpr ;
}
}
Включает в себя все функциональные расширения Proto.
Включает все функциональные расширения для Proto for the Boost. Библиотека Fusion.
Включает все функциональные расширения Proto для стандартной библиотеки.
Включает вызовы Proto для функций, найденных в стандарте header
.
namespace boost {
namespace proto {
namespace functional {
struct advance ;
struct distance ;
struct next ;
struct prior ;
}
}
}
Определение proto::make_expr()
и proto::unpack_expr()
утилиты для строительства Узлы экспрессии прото из детских узлов или из последовательности Fusion детских узлов соответственно.
namespace boost {
namespace proto {
template < typename Tag, typename ... A>
typename proto::result_of::make_expr < Tag , A const ... > :: type const
make_expr ( A const & ... ) ;
template < typename Tag, typename Domain , typename ... A>
typename proto::result_of::make_expr < Tag , Domain , A const ... > :: type const
make_expr ( A const & ... ) ;
template < typename Tag, typename Sequence>
typename proto::result_of::unpack_expr < Tag , Sequence const > :: type const
unpack_expr ( Sequence const & ) ;
template < typename Tag, typename Domain , typename Sequence>
typename proto::result_of::unpack_expr < Tag , Domain , Sequence const > :: type const
unpack_expr ( Sequence const & ) ;
namespace functional {
template < typename Tag, typename Domain = proto::deduce_domain >
struct make_expr ;
template < typename Tag, typename Domain = proto::deduce_domain >
struct unpack_expr ;
}
namespace result_of {
template < typename Tag, typename ... A> struct make_expr ;
template < typename Tag, typename Domain , typename ... A>
struct make_expr < Tag , Domain , A ... > ;
template < typename Tag, typename Sequence, typename Void = void >
struct unpack_expr ;
template < typename Tag, typename Domain , typename Sequence>
struct unpack_expr < Tag , Domain , Sequence > ;
}
}
}
Содержит определение proto::matches<>
метафункция для определения, соответствует ли данное выражение заданному шаблону.
namespace boost {
namespace proto {
struct _ ;
template < typename Grammar> struct not_ ;
template < typename If, typename Then = proto::_ ,
typename Else = proto::not_ < proto::_ > >
struct if_ ;
template < typename ... G> struct or_ ;
template < typename ... G> struct and_ ;
template < typename Cases, typename Transform > struct switch_ ;
template < typename T> struct exact ;
template < typename T> struct convertible_to ;
template < typename Grammar> struct vararg ;
template < typename Expr , typename Grammar> struct matches ;
}
}
Содержит все перегруженные операторы, которые позволяют строить деревья экспрессии Прото.
BOOST_PROTO_DEFINE_OPERATORS (Trait, Domain)
namespace boost {
namespace proto {
template < typename T> struct is_extension ;
template < typename Arg> unspecified operator + ( Arg & arg) ;
template < typename Arg> unspecified operator + ( Arg const & arg) ;
template < typename Arg> unspecified operator - ( Arg & arg) ;
template < typename Arg> unspecified operator - ( Arg const & arg) ;
template < typename Arg> unspecified operator * ( Arg & arg) ;
template < typename Arg> unspecified operator * ( Arg const & arg) ;
template < typename Arg> unspecified operator ~ ( Arg & arg) ;
template < typename Arg> unspecified operator ~ ( Arg const & arg) ;
template < typename Arg> unspecified operator & ( Arg & arg) ;
template < typename Arg> unspecified operator & ( Arg const & arg) ;
template < typename Arg> unspecified operator ! ( Arg & arg) ;
template < typename Arg> unspecified operator ! ( Arg const & arg) ;
template < typename Arg> unspecified operator ++ ( Arg & arg) ;
template < typename Arg> unspecified operator ++ ( Arg const & arg) ;
template < typename Arg> unspecified operator -- ( Arg & arg) ;
template < typename Arg> unspecified operator -- ( Arg const & arg) ;
template < typename Arg> unspecified operator ++ ( Arg & arg, int ) ;
template < typename Arg> unspecified operator ++ ( Arg const & arg, int ) ;
template < typename Arg> unspecified operator -- ( Arg & arg, int ) ;
template < typename Arg> unspecified operator -- ( Arg const & arg, int ) ;
template < typename Left, typename Right>
unspecified operator << ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator << ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator << ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator << ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator >> ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator >> ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator >> ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator >> ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator * ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator * ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator * ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator * ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator / ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator / ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator / ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator / ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator % ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator % ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator % ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator % ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator + ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator + ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator + ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator + ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator - ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator - ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator - ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator - ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator < ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator < ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator < ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator < ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator > ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator > ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator > ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator > ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator <= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator <= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator <= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator <= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator >= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator >= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator >= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator >= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator == ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator == ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator == ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator == ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator != ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator != ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator != ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator != ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator || ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator || ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator || ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator || ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator && ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator && ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator && ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator && ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator & ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator & ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator & ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator & ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator | ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator | ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator | ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator | ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator ^ ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator ^ ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator ^ ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator ^ ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator , ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator , ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator , ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator , ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator ->* ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator ->* ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator ->* ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator ->* ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator <<= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator <<= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator <<= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator <<= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator >>= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator >>= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator >>= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator >>= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator *= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator *= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator *= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator *= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator /= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator /= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator /= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator /= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator %= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator %= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator %= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator %= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator += ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator += ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator += ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator += ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator -= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator -= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator -= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator -= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator &= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator &= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator &= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator &= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator |= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator |= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator |= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator |= ( Left const & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator ^= ( Left & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator ^= ( Left & left, Right const & right) ;
template < typename Left, typename Right>
unspecified operator ^= ( Left const & left, Right & right) ;
template < typename Left, typename Right>
unspecified operator ^= ( Left const & left, Right const & right) ;
template < typename A0, typename A1, typename A2>
typename proto::result_of::make_expr <
proto::tag::if_else_ ,
proto::deduce_domain ,
A0 const & ,
A1 const & ,
A2 const &
> :: type const
if_else ( A0 const & a0, A1 const & a1, A2 const & a2) ;
}
}
Включает в себя все Proto, кроме Boost. Тип регистрации.
Содержит макросы для облегчения генерации повторяющихся конструкций кода.
BOOST_PROTO_REPEAT (MACRO)
BOOST_PROTO_REPEAT_FROM_TO (FROM, TO, MACRO)
BOOST_PROTO_REPEAT_EX (MACRO, typename_A, A, A_a, a)
BOOST_PROTO_REPEAT_FROM_TO_EX (FROM, TO, MACRO, typename_A, A, A_a, a)
BOOST_PROTO_LOCAL_ITERATE ()
BOOST_PROTO_typename_A (N)
BOOST_PROTO_A_const_ref (N)
BOOST_PROTO_A_ref (N)
BOOST_PROTO_A (N)
BOOST_PROTO_A_const (N)
BOOST_PROTO_A_const_ref_a (N)
BOOST_PROTO_A_ref_a (N)
BOOST_PROTO_ref_a (N)
BOOST_PROTO_a (N)
Содержит определения для различных признаков выражения и утилит, таких как proto::tag_of и proto::arity_of <>
; функции proto::value ()
, proto::left ()
и proto::right ()
; proto::child ()
, proto::child_c ()
, proto::as_expr ()
, proto::as_child ()
и различные помощники.
namespace boost {
namespace proto {
template < typename T> struct is_callable ;
template < typename T> struct is_transform ;
template < typename T> struct is_aggregate ;
template < typename T> struct terminal ;
template < typename T, typename U, typename V> struct if_else_ ;
template < typename T> struct unary_plus ;
template < typename T> struct negate ;
template < typename T> struct dereference ;
template < typename T> struct complement ;
template < typename T> struct address_of ;
template < typename T> struct logical_not ;
template < typename T> struct pre_inc ;
template < typename T> struct pre_dec ;
template < typename T> struct post_inc ;
template < typename T> struct post_dec ;
template < typename T, typename U> struct shift_left ;
template < typename T, typename U> struct shift_right ;
template < typename T, typename U> struct multiplies ;
template < typename T, typename U> struct divides ;
template < typename T, typename U> struct modulus ;
template < typename T, typename U> struct plus ;
template < typename T, typename U> struct minus ;
template < typename T, typename U> struct less ;
template < typename T, typename U> struct greater ;
template < typename T, typename U> struct less_equal ;
template < typename T, typename U> struct greater_equal ;
template < typename T, typename U> struct equal_to ;
template < typename T, typename U> struct not_equal_to ;
template < typename T, typename U> struct logical_or ;
template < typename T, typename U> struct logical_and ;
template < typename T, typename U> struct bitwise_and ;
template < typename T, typename U> struct bitwise_or ;
template < typename T, typename U> struct bitwise_xor ;
template < typename T, typename U> struct comma ;
template < typename T, typename U> struct mem_ptr ;
template < typename T, typename U> struct assign ;
template < typename T, typename U> struct shift_left_assign ;
template < typename T, typename U> struct shift_right_assign ;
template < typename T, typename U> struct multiplies_assign ;
template < typename T, typename U> struct divides_assign ;
template < typename T, typename U> struct modulus_assign ;
template < typename T, typename U> struct plus_assign ;
template < typename T, typename U> struct minus_assign ;
template < typename T, typename U> struct bitwise_and_assign ;
template < typename T, typename U> struct bitwise_or_assign ;
template < typename T, typename U> struct bitwise_xor_assign ;
template < typename T, typename U> struct subscript ;
template < typename ... A> struct function ;
template < typename Tag, typename T> struct nullary_expr ;
template < typename Tag, typename T> struct unary_expr ;
template < typename Tag, typename T, typename U> struct binary_expr ;
template < typename Tag, typename ... A> struct nary_expr ;
template < typename T> struct is_expr ;
template < typename Expr > struct tag_of ;
template < typename Expr > struct arity_of ;
template < typename T>
typename proto::result_of::as_expr < T > :: type as_expr ( T & ) ;
template < typename T>
typename proto::result_of::as_expr < T const > :: type as_expr ( T const & ) ;
template < typename Domain , typename T>
typename proto::result_of::as_expr < T , Domain > :: type as_expr ( T & ) ;
template < typename Domain , typename T>
typename proto::result_of::as_expr < T const , Domain > :: type
as_expr ( T const & ) ;
template < typename T>
typename proto::result_of::as_child < T > :: type as_child ( T & ) ;
template < typename T>
typename proto::result_of::as_child < T const > :: type as_child ( T const & ) ;
template < typename Domain , typename T>
typename proto::result_of::as_child < T , Domain > :: type as_child ( T & ) ;
template < typename Domain , typename T>
typename proto::result_of::as_child < T const , Domain > :: type
as_child ( T const & ) ;
template < typename N, typename Expr >
typename proto::result_of::child < Expr & , N > :: type child ( Expr & ) ;
template < typename N, typename Expr >
typename proto::result_of::child < Expr const & , N > :: type
child ( Expr const & ) ;
template < typename Expr >
typename proto::result_of::child < Expr & > :: type child ( Expr & ) ;
template < typename Expr >
typename proto::result_of::child < Expr const & > :: type
child ( Expr const & ) ;
template < long N, typename Expr >
typename proto::result_of::child_c < Expr & , N > :: type child_c ( Expr & ) ;
template < long N, typename Expr >
typename proto::result_of::child_c < Expr const & , N > :: type
child_c ( Expr const & ) ;
template < typename Expr >
typename proto::result_of::value < Expr & > :: type value ( Expr & ) ;
template < typename Expr >
typename proto::result_of::value < Expr const & > :: type
value ( Expr const & ) ;
template < typename Expr >
typename proto::result_of::left < Expr & > :: type left ( Expr & ) ;
template < typename Expr >
typename proto::result_of::left < Expr const & > :: type left ( Expr const & ) ;
template < typename Expr >
typename proto::result_of::right < Expr & > :: type right ( Expr & ) ;
template < typename Expr >
typename proto::result_of::right < Expr const & > :: type
right ( Expr const & ) ;
namespace functional {
template < typename Domain = proto::default_domain > struct as_expr ;
template < typename Domain = proto::default_domain > struct as_child ;
template < long N> struct child_c ;
template < typename N = mpl :: long_ < 0 > > struct child ;
struct value ;
struct left ;
struct right ;
}
namespace result_of {
template < typename T, typename Domain = proto::default_domain >
struct as_expr ;
template < typename T, typename Domain = proto::default_domain >
struct as_child ;
template < typename Expr , typename N = mpl :: long_ < 0 > > struct child ;
template < typename Expr > struct value ;
template < typename Expr > struct left ;
template < typename Expr > struct right ;
template < typename Expr , long N> struct child_c ;
}
}
}
Включает в себя все встроенные преобразования Proto.
Содержит определение вызова<> преобразования.
namespace boost {
namespace proto {
template < typename T> struct call ;
}
}
namespace boost {
namespace proto {
template < typename Grammar = unspecified
> struct _default ;
}
}
BOOST_PROTO_DEFINE_ENV_VAR (Type, Name)
namespace boost {
namespace proto {
struct key_not_found ;
struct empty_env ;
template < typename Key, typename Value, typename Env = proto::empty_env >
struct env ;
template < typename T> struct is_env ;
struct data_type ;
proto::data_type const data ;
template < typename Key> struct _env_var ;
struct _env ;
template < typename T>
typename proto::result_of::as_env < T & > :: type as_env ( T & ) ;
template < typename T>
typename proto::result_of::as_env < T const & > :: type as_env ( T const & ) ;
template < typename Key, typename Env>
typename proto::result_of::has_env_var < Env & , Key > :: type
has_env_var ( Env & ) ;
template < typename Key, typename Env>
typename proto::result_of::has_env_var < Env const & , Key > :: type
has_env_var ( Env const & ) ;
template < typename Key, typename Env>
typename proto::result_of::env_var < Env & , Key > :: type env_var ( Env & ) ;
template < typename Key, typename Env>
typename proto::result_of::env_var < Env const & , Key > :: type
env_var ( Env const & ) ;
template < typename Env, typename Key, typename Value>
proto::env < Key , Value , UNCVREF
( typename proto::result_of::as_env < Env & > :: type ) >
operator , ( Env & , proto::env < Key , Value > const & ) ;
template < typename Env, typename Key, typename Value>
proto::env < Key , Value , UNCVREF
( typename proto::result_of::as_env < Env const & > :: type ) >
operator , ( Env const & , proto::env < Key , Value > const & ) ;
namespace functional {
struct as_env ;
template < typename Key> struct has_env_var ;
template < typename Key> struct env_var ;
}
namespace result_of {
template < typename T> struct as_env ;
template < typename Env, typename Key> struct has_env_var ;
template < typename Env, typename Key> struct env_var ;
}
}
}
Содержит определение преобразований proto::fold<>
и proto::reverse_fold<>
.
namespace boost {
namespace proto {
template < typename Sequence, typename State0, typename Fun> struct fold ;
template < typename Sequence, typename State0, typename Fun>
struct reverse_fold ;
}
}
Содержит определение трансформационных и трансформационных помощников.
namespace boost {
namespace proto {
template < typename PrimitiveTransform > struct transform ;
template < typename Expr , typename State, typename Data>
struct transform_impl ;
struct pack ;
}
}
Содержит определение интегрального преобразования и друзей.
namespace boost {
namespace proto {
template < typename T, T I> struct integral_c ;
template < char I> struct char_ ;
template < int I> struct int_ ;
template < long I> struct long_ ;
template < std :: size_t I> struct size_t ;
}
}
Содержит определение преобразования proto::lazy<>
.
namespace boost {
namespace proto {
template < typename T> struct lazy ;
}
}
Определение proto:: when<>
и proto::otherwise<>
трансформируется.
namespace boost {
namespace proto {
struct transforms_type ;
proto::transforms_type const transforms ;
template < typename Grammar, typename PrimitiveTransform = Grammar >
struct when ;
template < typename Grammar, typename Fun> struct when < Grammar , Fun * > ;
template < typename Grammar, typename R, typename ... A>
struct when < Grammar , R ( A ... ) > ;
template < typename Grammar, typename R, typename ... A>
struct when < Grammar , R ( A ... , ... ) > ;
template < typename Grammar> struct when < Grammar , proto::external_transform > ;
template < typename Fun> struct otherwise ;
struct external_transform ;
template < typename ... When> struct external_transforms ;
}
}
Включает все встроенные контексты оценки Proto.
Статья Reference раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 29. Boost.Proto может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 29. Boost.Proto ::