![]() |
Home | Libraries | People | FAQ | More |
The template container_value
is a template meta function used as an attribute customization point.
It is invoked by the Qi repetitive parsers (Kleene, Plus,
List, and Repeat) to determine
the type to store in a container.
#include <boost/spirit/home/support/container.hpp>
Also, see Include Structure.
![]() |
Note |
|---|---|
This header file does not need to be included directly by any user program as it is normally included by other Spirit header files relying on its content. |
|
Name |
|---|
|
|
template <typename Container, typename Enable> struct container_value { typedef <unspecified> type; };
|
Parameter |
Description |
Default |
|---|---|---|
|
|
The type, |
none |
|
|
Helper template parameter usable to selectively enable or disable
certain specializations of |
|
CA type to be tested whether it needs to be treated as a container.
T1,
T2, ...Arbitrary types
|
Expression |
Semantics |
|---|---|
|
|
Metafunction that evaluates to the type to be stored in a given
container type, |
Spirit predefines specializations of this customization point for several types. The following table lists those types together with the types exposed and the corresponding semantics:
|
Template Parameters |
Value |
|---|---|
|
|
The non-const |
|
|
Returns |
|
|
Returns |
|
|
Returns |
The customization point is_container
needs to be implemented for a specific type whenever this type is to
be used as an attribute in place of a STL container. It is applicable
for parsers (Spirit.Qi) only. As a rule of thumb:
it has to be implemented whenever a certain type is to be passed as an
attribute to a parser normally exposing a STL container and if the type
does not expose the interface of a STL container (i.e. no embedded typedef
for value_type). These
components have an attribute propagation rule in the form:
a: A --> Op(a): vector<A>
where Op(a)
stands for any meaningful operation on the component a.
If this customization point is implemented, the following other customization points might need to be implemented as well.
|
Name |
When to implement |
|---|---|
TBD