1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#ifndef BOOST_MPL_TAG_HPP_INCLUDED
3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#define BOOST_MPL_TAG_HPP_INCLUDED
4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Copyright Aleksey Gurtovoy 2004
6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//
7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Distributed under the Boost Software License, Version 1.0.
8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// (See accompanying file LICENSE_1_0.txt or copy at
9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// http://www.boost.org/LICENSE_1_0.txt)
10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//
11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// See http://www.boost.org/libs/mpl for documentation.
12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// $Id: tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// $Revision: 49267 $
16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <boost/mpl/eval_if.hpp>
18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <boost/mpl/void.hpp>
19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <boost/mpl/aux_/has_tag.hpp>
20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <boost/mpl/aux_/config/eti.hpp>
21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnernamespace boost { namespace mpl {
23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnernamespace aux {
25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnertemplate< typename T > struct tag_impl
26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{
27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    typedef typename T::tag type;
28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner};
29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner}
30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnertemplate< typename T, typename Default = void_ > struct tag
32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    : if_<
34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner          aux::has_tag<T>
35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        , aux::tag_impl<T>
36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        , Default
37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        >::type
38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{
39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#else
40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{
41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    typedef typename eval_if<
42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner          aux::has_tag<T>
43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        , aux::tag_impl<T>
44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        , Default
45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        >::type type;
46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#endif
48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner};
49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner}}
51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#endif // BOOST_MPL_TAG_HPP_INCLUDED
53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner