Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:57:26

0001 
0002 #ifndef BOOST_MPL_PAIR_HPP_INCLUDED
0003 #define BOOST_MPL_PAIR_HPP_INCLUDED
0004 
0005 // Copyright Aleksey Gurtovoy 2001-2004
0006 //
0007 // Distributed under the Boost Software License, Version 1.0. 
0008 // (See accompanying file LICENSE_1_0.txt or copy at 
0009 // http://www.boost.org/LICENSE_1_0.txt)
0010 //
0011 // See http://www.boost.org/libs/mpl for documentation.
0012 
0013 // $Id$
0014 // $Date$
0015 // $Revision$
0016 
0017 #include <boost/mpl/aux_/msvc_eti_base.hpp>
0018 #include <boost/mpl/aux_/na_spec.hpp>
0019 #include <boost/mpl/aux_/lambda_support.hpp>
0020 #include <boost/mpl/aux_/config/eti.hpp>
0021 
0022 namespace boost { namespace mpl {
0023 
0024 template<
0025       typename BOOST_MPL_AUX_NA_PARAM(T1)
0026     , typename BOOST_MPL_AUX_NA_PARAM(T2)
0027     >
0028 struct pair
0029 {
0030     typedef pair type;
0031     typedef T1 first;
0032     typedef T2 second;
0033 
0034     BOOST_MPL_AUX_LAMBDA_SUPPORT(2,pair,(T1,T2))
0035 };
0036 
0037 template<
0038       typename BOOST_MPL_AUX_NA_PARAM(P)
0039     >
0040 struct first
0041 {
0042 #if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
0043     typedef typename P::first type;
0044 #else
0045     typedef typename aux::msvc_eti_base<P>::first type;
0046 #endif
0047     BOOST_MPL_AUX_LAMBDA_SUPPORT(1,first,(P))
0048 };
0049 
0050 template<
0051       typename BOOST_MPL_AUX_NA_PARAM(P)
0052     >
0053 struct second
0054 {
0055 #if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
0056     typedef typename P::second type;
0057 #else
0058     typedef typename aux::msvc_eti_base<P>::second type;
0059 #endif
0060     BOOST_MPL_AUX_LAMBDA_SUPPORT(1,second,(P))
0061 };
0062 
0063 
0064 BOOST_MPL_AUX_NA_SPEC_NO_ETI(2, pair)
0065 BOOST_MPL_AUX_NA_SPEC(1, first)
0066 BOOST_MPL_AUX_NA_SPEC(1, second)
0067 
0068 }}
0069 
0070 #endif // BOOST_MPL_PAIR_HPP_INCLUDED