This file is indexed.

/usr/include/range/v3/view/counted.hpp is in librange-v3-dev 0.3.5-1.

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
/// \file
// Range v3 library
//
//  Copyright Eric Niebler 2014-present
//
//  Use, modification and distribution is subject to 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)
//
// Project home: https://github.com/ericniebler/range-v3
//
#ifndef RANGES_V3_VIEW_COUNTED_HPP
#define RANGES_V3_VIEW_COUNTED_HPP

#include <utility>
#include <range/v3/detail/satisfy_boost_range.hpp>
#include <range/v3/range_fwd.hpp>
#include <range/v3/view_interface.hpp>
#include <range/v3/iterator_range.hpp>
#include <range/v3/utility/iterator.hpp>
#include <range/v3/utility/iterator_traits.hpp>
#include <range/v3/utility/iterator_concepts.hpp>
#include <range/v3/utility/counted_iterator.hpp>
#include <range/v3/utility/static_const.hpp>

namespace ranges
{
    inline namespace v3
    {
        /// \addtogroup group-views
        /// @{
        template<typename I>
        struct counted_view
          : view_interface<counted_view<I>>
        {
        private:
            friend range_access;
            using size_type_ = size_type_t<I>;
            I it_;
            difference_type_t<I> n_;

        public:
            counted_view() = default;
            counted_view(I it, difference_type_t<I> n)
              : it_(it), n_(n)
            {
                RANGES_EXPECT(0 <= n_);
            }
            counted_iterator<I> begin() const
            {
                return make_counted_iterator(it_, n_);
            }
            default_sentinel end() const
            {
                return {};
            }
            size_type_ size() const
            {
                return static_cast<size_type_>(n_);
            }
        };

        namespace view
        {
            struct counted_fn
            {
                template<typename I,
                    CONCEPT_REQUIRES_(Iterator<I>())>
                counted_view<I> operator()(I it, difference_type_t<I> n) const
                {
                    return {std::move(it), n};
                }
                // TODO Once we support contiguous iterators, we can generalize this.
                // (Note: it's not possible for RandomAccessIterators in general because
                // of cyclic iterators.
                template<typename T>
                iterator_range<T*> operator()(T *t, std::ptrdiff_t n) const
                {
                    return {t, t + n};
                }
            };

            /// \relates counted_fn
            /// \ingroup group-views
            RANGES_INLINE_VARIABLE(counted_fn, counted)
        }
        /// @}
    }
}

RANGES_SATISFY_BOOST_RANGE(::ranges::v3::counted_view)

#endif