williamr@2: williamr@4: #ifndef BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED williamr@4: #define BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED williamr@2: williamr@4: // Copyright Aleksey Gurtovoy 2000-2004 williamr@2: // williamr@2: // Distributed under the Boost Software License, Version 1.0. williamr@2: // (See accompanying file LICENSE_1_0.txt or copy at williamr@2: // http://www.boost.org/LICENSE_1_0.txt) williamr@2: // williamr@2: // See http://www.boost.org/libs/mpl for documentation. williamr@2: williamr@4: // $Source: /cvsroot/boost/boost/boost/mpl/aux_/at_impl.hpp,v $ williamr@4: // $Date: 2004/09/02 15:40:43 $ williamr@4: // $Revision: 1.5 $ williamr@2: williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: #include williamr@2: williamr@2: namespace boost { namespace mpl { williamr@2: williamr@4: // default implementation; conrete sequences might override it by williamr@4: // specializing either the 'at_impl' or the primary 'at' template williamr@4: williamr@4: template< typename Tag > williamr@4: struct at_impl williamr@2: { williamr@4: template< typename Sequence, typename N > struct apply williamr@2: { williamr@4: typedef typename advance< williamr@4: typename begin::type williamr@4: , N williamr@4: >::type iter_; williamr@4: williamr@4: typedef typename deref::type type; williamr@2: }; williamr@2: }; williamr@2: williamr@4: BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, at_impl) williamr@4: williamr@2: }} williamr@2: williamr@4: #endif // BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED