epoc32/include/stdapis/boost/mpl/front.hpp
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
equal deleted inserted replaced
3:e1b950c65cb4 4:837f303aceeb
     1 
     1 
     2 #ifndef BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
     2 #ifndef BOOST_MPL_FRONT_HPP_INCLUDED
     3 #define BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
     3 #define BOOST_MPL_FRONT_HPP_INCLUDED
     4 
     4 
     5 // Copyright Aleksey Gurtovoy 2000-2004
     5 // Copyright Aleksey Gurtovoy 2000-2004
     6 //
     6 //
     7 // Distributed under the Boost Software License, Version 1.0. 
     7 // Distributed under the Boost Software License, Version 1.0. 
     8 // (See accompanying file LICENSE_1_0.txt or copy at 
     8 // (See accompanying file LICENSE_1_0.txt or copy at 
     9 // http://www.boost.org/LICENSE_1_0.txt)
     9 // http://www.boost.org/LICENSE_1_0.txt)
    10 //
    10 //
    11 // See http://www.boost.org/libs/mpl for documentation.
    11 // See http://www.boost.org/libs/mpl for documentation.
    12 
    12 
    13 // $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/front.hpp,v $
    13 // $Source: /cvsroot/boost/boost/boost/mpl/front.hpp,v $
    14 // $Date: 2004/09/02 15:41:19 $
    14 // $Date: 2004/09/02 15:40:41 $
    15 // $Revision: 1.4 $
    15 // $Revision: 1.4 $
    16 
    16 
    17 #include <boost/mpl/front_fwd.hpp>
    17 #include <boost/mpl/front_fwd.hpp>
    18 #include <boost/mpl/vector/aux_/at.hpp>
    18 #include <boost/mpl/aux_/front_impl.hpp>
    19 #include <boost/mpl/vector/aux_/tag.hpp>
    19 #include <boost/mpl/sequence_tag.hpp>
    20 #include <boost/mpl/aux_/nttp_decl.hpp>
    20 #include <boost/mpl/aux_/na_spec.hpp>
    21 #include <boost/mpl/aux_/config/typeof.hpp>
    21 #include <boost/mpl/aux_/lambda_support.hpp>
    22 #include <boost/mpl/aux_/config/ctps.hpp>
       
    23 
    22 
    24 namespace boost { namespace mpl {
    23 namespace boost { namespace mpl {
    25 
    24 
    26 #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
    25 template<
    27 
    26       typename BOOST_MPL_AUX_NA_PARAM(Sequence)
    28 template<>
    27     >
    29 struct front_impl< aux::vector_tag >
    28 struct front
       
    29     : front_impl< typename sequence_tag<Sequence>::type >
       
    30         ::template apply< Sequence >
    30 {
    31 {
    31     template< typename Vector > struct apply
    32     BOOST_MPL_AUX_LAMBDA_SUPPORT(1,front,(Sequence))
    32         : v_at<Vector,0>
       
    33     {
       
    34     };
       
    35 };
    33 };
    36 
    34 
    37 #else
    35 BOOST_MPL_AUX_NA_SPEC(1, front)
    38 
       
    39 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
       
    40 
       
    41 template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
       
    42 struct front_impl< aux::vector_tag<n_> >
       
    43 {
       
    44     template< typename Vector > struct apply
       
    45     {
       
    46         typedef typename Vector::item0 type;
       
    47     };
       
    48 };
       
    49 
       
    50 #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
       
    51 
       
    52 #endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
       
    53 
    36 
    54 }}
    37 }}
    55 
    38 
    56 #endif // BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
    39 #endif // BOOST_MPL_FRONT_HPP_INCLUDED