VectorExpression concept
Description
A vector expression is an expression which after computation results in a vector.
Thus a vector expression can be assigned to a vector collection.
Refinement of
Expression.
Associated types
Value type |
X::value_type [1] |
The type of the entries in the expression |
Const reference type |
X::const_reference |
const lvalue of value_type [2] |
Size type |
X::size_type |
The type of the indices. The size_type must be a signed or unsigned integer type
[3] |
Notation
X |
Type that is a model of Expression |
a |
Objects of type X |
Definitions
Valid expressions
Name |
Expression |
Type requirements |
Return type |
Size |
a.size() [3] |
|
size_type |
Element access |
a[i] |
|
const_reference |
Element access |
a(i) |
|
const_reference |
Expression semantics
Name |
Expression |
Precondition |
Semantics |
Postcondition |
Size |
a.size() |
|
Returns the current size of the collection [3] |
a.size()>=0 |
Element access |
a[i] |
0≤i and i<a.size() |
Returns the value at the given index |
|
Element access |
a(i) |
0≤i and i<a.size() |
Returns the value at the given index |
|
Complexity guarantees
Invariants
Models
Notes
[1] Although the value_type
is not used directly in the operations of the
VectorExpression, having the value_type
makes the implementation of the value
meta-function
easier and improves compatibility with the std::vector
.
[2] The const_reference
is defined identically tot the const_reference
in the standard's container requirements. Remark that this does not necessitate const_reference
to be
defined as 'value_type const &
'. Since expressions by definition calculate the expression only when it's
asked for and never store the result a reference to the (stored) result is impossible.
[3] The size()
member-function and size_type
are not really necessary since
the Expression already provides a free size(a)
function and a size<X>::type
meta-function
but this improves compatibility and the former can be used to implement the latter.