<<<<<<< .working ======= >>>>>>> .merge-right.r57125
Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
<<<<<<< .working

category_of

Description

=======
Description
>>>>>>> .merge-right.r57125

A metafunction that establishes the conceptual classification of a particular Sequence or Iterator (see Iterator Concepts and Sequence Concepts).

<<<<<<< .working

Synopsis

=======
Synopsis
>>>>>>> .merge-right.r57125
namespace traits
{
    template <typename T>
    struct category_of
    {
        typedef unspecified type;
    };
}
<<<<<<< .working

Parameters

=======
Parameters
>>>>>>> .merge-right.r57125

Parameter

Requirement

Description

T

Any type

The type to query.

<<<<<<< .working

Expression =======

Expression >>>>>>> .merge-right.r57125 Semantics
typedef traits::category_of<T>::type category;

Return type:

The return type is derived from one of:

namespace boost { namespace fusion
{
    struct incrementable_sequence_tag {};

    struct single_pass_sequence_tag
        : incrementable_sequence_tag {};

    struct forward_traversal_tag
        : single_pass_sequence_tag {};

    struct bidirectional_traversal_tag
        : forward_traversal_tag {};

    struct random_access_traversal_tag
        : bidirectional_traversal_tag {};
}}

And optionally from:

namespace boost { namespace fusion
{
    struct associative_tag {};
}}

Semantics: Establishes the conceptual classification of a particular Sequence or Iterator.

<<<<<<< .working

Header

=======
Header
>>>>>>> .merge-right.r57125
#include <boost/fusion/support/category_of.hpp>
#include <boost/fusion/include/category_of.hpp>
<<<<<<< .working

Example

=======
Example
>>>>>>> .merge-right.r57125
using boost::is_base_of;
typedef traits::category_of<list<> >::type list_category;
typedef traits::category_of<vector<> >::type vector_category;
BOOST_MPL_ASSERT(( is_base_of<forward_traversal_tag, list_category> ));
BOOST_MPL_ASSERT(( is_base_of<random_access_traversal_tag, vector_category> ));

PrevUpHomeNext