1 // Boost.Range library
2 //
3 //  Copyright Neil Groves 2003-2004.
4 //  Use, modification and distribution is subject to the Boost Software
5 //  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 //  http://www.boost.org/LICENSE_1_0.txt)
7 //
8 // For more information, see http://www.boost.org/libs/range/
9 //
10 #ifndef BOOST_RANGE_RANGE_FWD_HPP_INCLUDED
11 #define BOOST_RANGE_RANGE_FWD_HPP_INCLUDED
12 
13 namespace boost
14 {
15 
16 // Extension points
17     template<typename C, typename Enabler>
18     struct range_iterator;
19 
20     template<typename C, typename Enabler>
21     struct range_mutable_iterator;
22 
23     template<typename C, typename Enabler>
24     struct range_const_iterator;
25 
26 // Core classes
27     template<typename IteratorT>
28     class iterator_range;
29 
30     template<typename ForwardRange>
31     class sub_range;
32 
33 // Meta-functions
34     template<typename T>
35     struct range_category;
36 
37     template<typename T>
38     struct range_difference;
39 
40     template<typename T>
41     struct range_pointer;
42 
43     template<typename T>
44     struct range_reference;
45 
46     template<typename T>
47     struct range_reverse_iterator;
48 
49     template<typename T>
50     struct range_size;
51 
52     template<typename T>
53     struct range_value;
54 
55     template<typename T>
56     struct has_range_iterator;
57 
58     template<typename T>
59     struct has_range_const_iterator;
60 
61 } // namespace boost
62 
63 #endif // include guard
64