/
usr
/
include
/
boost
/
mpl
/
aux_
/
range_c
/
/usr/include/boost/mpl/aux_/range_c
mkdir
upload
Name
Size
Mode
Actions
back.hpp
777
0644
edit
dl
rm
empty.hpp
823
0644
edit
dl
rm
front.hpp
726
0644
edit
dl
rm
iterator.hpp
2654
0644
edit
dl
rm
O1_size.hpp
722
0644
edit
dl
rm
size.hpp
812
0644
edit
dl
rm
tag.hpp
543
0644
edit
dl
rm
Edit:
/usr/include/boost/mpl/aux_/range_c/iterator.hpp
(2654B)
#ifndef BOOST_MPL_AUX_RANGE_C_ITERATOR_HPP_INCLUDED #define BOOST_MPL_AUX_RANGE_C_ITERATOR_HPP_INCLUDED // Copyright Aleksey Gurtovoy 2000-2004 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/mpl for documentation. // $Id$ // $Date$ // $Revision$ #include <boost/mpl/iterator_tags.hpp> #include <boost/mpl/advance_fwd.hpp> #include <boost/mpl/distance_fwd.hpp> #include <boost/mpl/next_prior.hpp> #include <boost/mpl/deref.hpp> #include <boost/mpl/plus.hpp> #include <boost/mpl/minus.hpp> #include <boost/mpl/aux_/value_wknd.hpp> #include <boost/mpl/aux_/config/ctps.hpp> namespace boost { namespace mpl { // theoretically will work on any discrete numeric type template< typename N > struct r_iter { typedef aux::r_iter_tag tag; typedef random_access_iterator_tag category; typedef N type; #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) typedef r_iter< typename mpl::next<N>::type > next; typedef r_iter< typename mpl::prior<N>::type > prior; #endif }; #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename N > struct next< r_iter<N> > { typedef r_iter< typename mpl::next<N>::type > type; }; template< typename N > struct prior< r_iter<N> > { typedef r_iter< typename mpl::prior<N>::type > type; }; #endif template<> struct advance_impl<aux::r_iter_tag> { template< typename Iter, typename Dist > struct apply { typedef typename deref<Iter>::type n_; #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) typedef typename plus_impl<integral_c_tag,integral_c_tag> ::template apply<n_,Dist>::type m_; #else typedef typename plus<n_,Dist>::type m_; #endif // agurt, 10/nov/04: to be generic, the code have to do something along // the lines below... // // typedef typename apply_wrap1< // numeric_cast< typename m_::tag, typename n_::tag > // , m_ // >::type result_; // // ... meanwhile: typedef integral_c< typename aux::value_type_wknd<n_>::type , BOOST_MPL_AUX_VALUE_WKND(m_)::value > result_; typedef r_iter<result_> type; }; }; template<> struct distance_impl<aux::r_iter_tag> { template< typename Iter1, typename Iter2 > struct apply : minus< typename Iter2::type , typename Iter1::type > { }; }; }} #endif // BOOST_MPL_AUX_RANGE_C_ITERATOR_HPP_INCLUDED
Save
cmd:
run