![]() |
A Forwarding Strategy is a type which has two associated imaginary operators
_arg_list
and _meta_arg_list
which takes a token sequence
and a strategy. If the first argument of arg_list
or _meta_arg_list
is not a
sequence, assume it is "one element" sequence. Egg components use
by_perfect
when you omit or
specify _default
for strategy
parameter.
This section uses the following notation.
Valid expression |
Semantics |
---|---|
|
|
|
|
|
|
|
|
, where V
is boost::remove_cv<boost::decay<_typeof(a)>::type>::type
.
![]() |
Note |
---|---|
|
Egg performs the "perfect forwarding" by default.
<pstade/egg/by_perfect.hpp>
Valid expression |
Semantics |
---|---|
|
|
|
|
|
See function. |
0 <=
K &&
K <=
PSTADE_EGG_MAX_ARITY
.
aI
is not a function
reference.
_meta_arg_list(a, by_perfect)
is int,const int,int
const
if a
is i,3,ci
,
where i
is non-const lvalue
and ci
is a const lvalue.
by_ref
offers a large arity,
but can't take a non-const rvalue.
<pstade/egg/by_ref.hpp>
Valid expression |
Semantics |
---|---|
|
|
|
|
|
See function. |
0 <=
K &&
K <=
PSTADE_EGG_MAX_LINEAR_ARITY
.
aI
is not a rvalue.
_meta_arg_list(a, by_ref)
is int,const int,int
const
if a
is i,ci,ci
,
where i
is non-const lvalue
and ci
is a const lvalue.
by_cref
takes the arguments
by const reference.
<pstade/egg/by_cref.hpp>
Valid expression |
Semantics |
---|---|
|
|
|
|
|
See function. |
0 <=
K &&
K <=
PSTADE_EGG_MAX_LINEAR_ARITY
.
_meta_arg_list(a, by_cref)
is int
const,const int,int const
if a
is i,ci,ci
, where i
is non-const lvalue and ci
is a const lvalue.
by_value
takes the arguments
by value, which means that it can take a temporary "movable type"
like std::auto_ptr<>
.
<pstade/egg/by_value.hpp>
Valid expression |
Semantics |
---|---|
|
|
|
|
|
See function. |
0 <=
K &&
K <=
PSTADE_EGG_MAX_LINEAR_ARITY
.
_meta_arg_list(a, by_value)
is int,int,int
if a
is i,3,ci
,
where i
is non-const lvalue
and ci
is a const lvalue.
C++ instantiates the declarations of non-dependent member function templates, so that some Function Builders and Function Adaptors require a special workaround. Here an imaginary operator is defined for the documentation.
_deduce_r0(R0, expr)
is defined by the following:
R0
is _default
, it is a valid expression
and returns an unspecified type .
R0
is use_nullary_result
,
_decltype(_epxr)
is a valid expression, it is a valid expression and returns _decltype(expr)
.
R0
.
Copyright © 2007 Shunsuke Sogame |