glas::A_concept
in the glas/concept/ directory.
The meta function concept<X>::type computes the list of
concepts that the type X is a model of.
This meta function is specialized for all models in GLAS.
This must be a
Boost::MPL::ForwardSequence,
where each element satisfies the Concept concept.
For example,
boost::mpl::vector<vector_collection_concept, view_concept>is the list of concepts for
sparse_dense_view.
Here,
struct vector_collection_concept {
  typedef boost::mpl::vector<vector_expression_concept> depends_on ;
} ;
indicates that VectorCollection is a specialization of VectorExpression.
Users who which to create their own classes, should specialize the concept
meta-function for their classes.
is_A<X>allows us to check whether the type
X is a model of the concept A.
This is a
Boolean IntegralConstant.
The function does not verify an exact match of the list of concepts in
concept<X>::type, but also the depends_on fields of each element of the
list.
Hence is_vector_expression<sparse_dense_view<...> > is true since
a VectorCollection is a specialization of VectorExpression.