A Pipable Adaptor is
a Pipable
Function Object which has the associated Static
Function Object using prefix make_
.
In addition to the requirements defined in the refinements, for any Pipable Adaptor p
the following must be met:
_typeof(p)
is
a POD type, and p
is statically initialized.
x|p(x1,...,xN)
is a valid expression if and only if
make_++p(x, x1,...,xN)
is a valid expression.
x|p(x1,...,xN)
and make_++p(x, x1,...,xN)
have the same effects.
make_++p
is a Static
Function Object.
N
is 0
,
x|p
and and make_++p(x)
are
valid expressions which has the same effects.
A Resettable Object is an object which is modifiable after its construction.
r
is a Resettable
Object.
R
is _typeof(r)
.
s
is an object whose type
is R
.
aI
is an object.
bI
is an object whose type
is _typeof(aI)
.
R r(a0);
is a valid expression if and only if s
= b0;
is a valid expression.
R r(a1,...,aN);
is a valid expression if and only if s.reset(b1,...bN);
is a valid expression.
s
and r
shall have the same states if all the arguments have the same states.
R r;
is a valid expression if and only if
R s
= boost::none;
is a valid expression.
R r;
is a valid expression if and only if
s.reset();
is a valid expression.
R r;
is a valid expression if and only if
s =
boost::none;
is a valid expression.
s
and r
shall have the same states.
A Stoppable Generator is a Polymorphic Function Object which can specify the stop of generating using Boost.Optional.
In addition to the requirements defined in the refinements, for any Stoppable Generator g
the following must be met:
_typeof(g(...))
is a boost::optional
.
An Iteration Block is a unary Function Object that yields an ordered sequence of values.
In addition to the requirements defined in Function
Object, for any Iteration
Block b
the following
must be met:
y
, b(y)
is a valid expression.
_typeof(b)::yield_type
is a type of object passed
to y
.
A Constant Range is a Range whose elements are not modifiable.
In addition to the requirements defined in the refinements, for any Constant Range
r
the following must be met:
std::list<int> const
int const[10]
A Contiguous Range is a Random Access Range whose elements are stored contiguously.
In addition to the requirements defined in the refinements, for any Contiguous Range
r
the following must be met:
&*(_begin(r)
+ n) == &*(_begin(r)) + n
for
all n
such that 0 <= n &&
n <
_end(r) -
_begin(r)
.
std::vector<int>
boost::array<char, 50>
A Parallel Safe type offers the same level of thread safety as built-in types.
For any Parallel Safe
type t
the following must
be met:
t
can be accessed simultaneosly by multiple threads (even when these instances
are copies).
int
boost::shared_ptr<int>
Copyright © 2005 -2007 Shunsuke Sogame |