...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::proto::result_of::value — A metafunction that returns the type of the value of a terminal Proto expression.
// In header: <boost/proto/traits.hpp>
template<typename Expr>
struct value {
// types
typedef typename Expr::proto_child0 value_type;
typedef see-below
type;
};
value
public
typestypedef typename Expr::proto_child0 value_type;
The raw type of the value as it is
stored within Expr
. This may be a value or a reference.
If Expr
is not a reference type, type
is computed as follows:
T const(&)[N]
becomes T[N]
T[N]
becomes T[N]
T(&)[N]
becomes T[N]
R(&)(A...)
becomes R(&)(A...)
T const &
becomes T
T &
becomes T
T
becomes T
If Expr
is a non-const reference type, type
is computed as follows:
T const(&)[N]
becomes T const(&)[N]
T[N]
becomes T(&)[N]
T(&)[N]
becomes T(&)[N]
R(&)(A...)
becomes R(&)(A...)
T const &
becomes T const &
T &
becomes T &
T
becomes T &
If Expr
is a const reference type, type
is computed as follows:
T const(&)[N]
becomes T const(&)[N]
T[N]
becomes T const(&)[N]
T(&)[N]
becomes T(&)[N]
R(&)(A...)
becomes R(&)(A...)
T const &
becomes T const &
T &
becomes T &
T
becomes T const &