Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.


    Copyright (c) 2001-2011 Joel de Guzman
    Copyright (c) 2005-2006 Dan Marsden

    Distributed under the Boost Software License, Version 1.0. (See accompanying 
    file LICENSE_1_0.txt or copy at
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141)
#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141

#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
#include <boost/mpl/begin_end.hpp>
#include <boost/mpl/is_sequence.hpp>
#include <boost/static_assert.hpp>

namespace boost { namespace fusion {

    namespace detail
        template <typename T>
        struct mpl_sequence_category_of
            // assumes T is an mpl sequence
            // there should be no way this will ever be
            // called where T is an mpl iterator
            typedef typename 
                    typename mpl::begin<T>::type::category

    struct mpl_sequence_tag;

    namespace extension
        template<typename Tag>
        struct category_of_impl;

        struct category_of_impl<mpl_sequence_tag>
            template<typename T>
            struct apply
                : detail::mpl_sequence_category_of<T>