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
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
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