epoc32/include/stdapis/boost/mpl/aux_/msvc_eti_base.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
     1 
     2 #ifndef BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
     3 #define BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
     4 
     5 // Copyright Aleksey Gurtovoy 2001-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/aux_/msvc_eti_base.hpp,v $
    14 // $Date: 2004/11/28 01:37:05 $
    15 // $Revision: 1.7 $
    16 
    17 #include <boost/mpl/aux_/is_msvc_eti_arg.hpp>
    18 #include <boost/mpl/aux_/config/eti.hpp>
    19 #include <boost/mpl/aux_/config/gcc.hpp>
    20 #include <boost/mpl/aux_/config/workaround.hpp>
    21 
    22 namespace boost { namespace mpl { namespace aux {
    23 
    24 #if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
    25 
    26 template< bool > struct msvc_eti_base_impl
    27 {
    28     template< typename T > struct result_
    29         : T
    30     {
    31         typedef T type;
    32     };
    33 };
    34 
    35 template<> struct msvc_eti_base_impl<true>
    36 {
    37     template< typename T > struct result_
    38     {
    39         typedef result_ type;
    40         typedef result_ first;
    41         typedef result_ second;
    42         typedef result_ tag;
    43         enum { value = 0 };
    44     };
    45 };
    46 
    47 template< typename T > struct msvc_eti_base
    48     : msvc_eti_base_impl< is_msvc_eti_arg<T>::value >
    49         ::template result_<T>
    50 {
    51 };
    52 
    53 #else // !BOOST_MPL_CFG_MSVC_70_ETI_BUG
    54 
    55 template< typename T > struct msvc_eti_base
    56     : T
    57 {
    58 #if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
    59     msvc_eti_base();
    60 #endif
    61     typedef T type;
    62 };
    63 
    64 #endif 
    65 
    66 template<> struct msvc_eti_base<int>
    67 {
    68     typedef msvc_eti_base type;
    69     typedef msvc_eti_base first;
    70     typedef msvc_eti_base second;
    71     typedef msvc_eti_base tag;
    72     enum { value = 0 };
    73 };
    74 
    75 }}}
    76 
    77 #endif // BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED