os/ossrv/ossrv_pub/boost_apis/boost/mpl/tag.hpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 
     2 #ifndef BOOST_MPL_TAG_HPP_INCLUDED
     3 #define BOOST_MPL_TAG_HPP_INCLUDED
     4 
     5 // Copyright Aleksey Gurtovoy 2004
     6 //
     7 // Distributed under the Boost Software License, Version 1.0. 
     8 // (See accompanying file LICENSE_1_0.txt or copy at 
     9 // http://www.boost.org/LICENSE_1_0.txt)
    10 //
    11 // See http://www.boost.org/libs/mpl for documentation.
    12 
    13 // $Source: /cvsroot/boost/boost/boost/mpl/tag.hpp,v $
    14 // $Date: 2004/09/02 15:40:42 $
    15 // $Revision: 1.2 $
    16 
    17 #include <boost/mpl/eval_if.hpp>
    18 #include <boost/mpl/void.hpp>
    19 #include <boost/mpl/aux_/has_tag.hpp>
    20 #include <boost/mpl/aux_/config/eti.hpp>
    21 
    22 namespace boost { namespace mpl {
    23 
    24 namespace aux {
    25 template< typename T > struct tag_impl
    26 {
    27     typedef typename T::tag type;
    28 };
    29 }
    30 
    31 template< typename T, typename Default = void_ > struct tag
    32 #if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
    33     : if_< 
    34           aux::has_tag<T>
    35         , aux::tag_impl<T>
    36         , Default
    37         >::type
    38 {
    39 #else
    40 {
    41     typedef typename eval_if< 
    42           aux::has_tag<T>
    43         , aux::tag_impl<T>
    44         , Default
    45         >::type type;
    46 
    47 #endif
    48 };
    49 
    50 }}
    51 
    52 #endif // BOOST_MPL_TAG_HPP_INCLUDED