/usr/include/boost/mpl/pair_view.hpp is in libboost1.46-dev 1.46.1-7ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | #ifndef BOOST_MPL_PAIR_VIEW_HPP_INCLUDED
#define BOOST_MPL_PAIR_VIEW_HPP_INCLUDED
// Copyright David Abrahams 2003-2004
// Copyright Aleksey Gurtovoy 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: pair_view.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
// $Revision: 49267 $
#include <boost/mpl/begin_end.hpp>
#include <boost/mpl/iterator_category.hpp>
#include <boost/mpl/advance.hpp>
#include <boost/mpl/distance.hpp>
#include <boost/mpl/next_prior.hpp>
#include <boost/mpl/deref.hpp>
#include <boost/mpl/min_max.hpp>
#include <boost/mpl/pair.hpp>
#include <boost/mpl/iterator_tags.hpp>
#include <boost/mpl/aux_/config/ctps.hpp>
#include <boost/mpl/aux_/na_spec.hpp>
namespace boost { namespace mpl {
namespace aux {
struct pair_iter_tag;
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
template< typename Iter1, typename Iter2, typename Category >
struct pair_iter;
template< typename Category > struct prior_pair_iter
{
template< typename Iter1, typename Iter2 > struct apply
{
typedef typename mpl::prior<Iter1>::type i1_;
typedef typename mpl::prior<Iter2>::type i2_;
typedef pair_iter<i1_,i2_,Category> type;
};
};
template<> struct prior_pair_iter<forward_iterator_tag>
{
template< typename Iter1, typename Iter2 > struct apply
{
typedef pair_iter<Iter1,Iter2,forward_iterator_tag> type;
};
};
#endif
}
template<
typename Iter1
, typename Iter2
, typename Category
>
struct pair_iter
{
typedef aux::pair_iter_tag tag;
typedef Category category;
typedef Iter1 first;
typedef Iter2 second;
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
typedef pair<
typename deref<Iter1>::type
, typename deref<Iter2>::type
> type;
typedef typename mpl::next<Iter1>::type i1_;
typedef typename mpl::next<Iter2>::type i2_;
typedef pair_iter<i1_,i2_,Category> next;
typedef apply_wrap2< aux::prior_pair_iter<Category>,Iter1,Iter2 >::type prior;
#endif
};
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
template< typename Iter1, typename Iter2, typename C >
struct deref< pair_iter<Iter1,Iter2,C> >
{
typedef pair<
typename deref<Iter1>::type
, typename deref<Iter2>::type
> type;
};
template< typename Iter1, typename Iter2, typename C >
struct next< pair_iter<Iter1,Iter2,C> >
{
typedef typename mpl::next<Iter1>::type i1_;
typedef typename mpl::next<Iter2>::type i2_;
typedef pair_iter<i1_,i2_,C> type;
};
template< typename Iter1, typename Iter2, typename C >
struct prior< pair_iter<Iter1,Iter2,C> >
{
typedef typename mpl::prior<Iter1>::type i1_;
typedef typename mpl::prior<Iter2>::type i2_;
typedef pair_iter<i1_,i2_,C> type;
};
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
template<> struct advance_impl<aux::pair_iter_tag>
{
template< typename Iter, typename D > struct apply
{
typedef typename mpl::advance< typename Iter::first,D >::type i1_;
typedef typename mpl::advance< typename Iter::second,D >::type i2_;
typedef pair_iter<i1_,i2_,typename Iter::category> type;
};
};
template<> struct distance_impl<aux::pair_iter_tag>
{
template< typename Iter1, typename Iter2 > struct apply
{
// agurt, 10/nov/04: MSVC 6.5 ICE-s on forwarding
typedef typename mpl::distance<
typename first<Iter1>::type
, typename first<Iter2>::type
>::type type;
};
};
template<
typename BOOST_MPL_AUX_NA_PARAM(Sequence1)
, typename BOOST_MPL_AUX_NA_PARAM(Sequence2)
>
struct pair_view
{
typedef nested_begin_end_tag tag;
typedef typename begin<Sequence1>::type iter1_;
typedef typename begin<Sequence2>::type iter2_;
typedef typename min<
typename iterator_category<iter1_>::type
, typename iterator_category<iter2_>::type
>::type category_;
typedef pair_iter<iter1_,iter2_,category_> begin;
typedef pair_iter<
typename end<Sequence1>::type
, typename end<Sequence2>::type
, category_
> end;
};
BOOST_MPL_AUX_NA_SPEC(2, pair_view)
}}
#endif // BOOST_MPL_PAIR_VIEW_HPP_INCLUDED
|