diff --git a/doc/boost_range.html b/doc/boost_range.html
index 65284fa..ace1901 100644
--- a/doc/boost_range.html
+++ b/doc/boost_range.html
@@ -157,7 +157,7 @@ class=identifier>T& template< class T >
- typename range_size<T>::type
+ typename range_difference<T>::type
size( const T& r );
//
@@ -471,12 +471,34 @@ class=identifier>T& linear time for pointers to a string, constant time
otherwise
+
+
+
+
+ as_array(x)
+ iterator_range<X>
+
+ [boost::begin(x),boost::end(x))
+
+
+
+
+ constant time otherwise
+
The special const_
-named functions are useful when you
want to document clearly that your code is read-only.
+ as_literal()
can be used internally in string
+ algorithm librararies to such that arrays of characters are
+ handled correctly.
+
+ as_array()
can be used with string algorithm libraries to make it clear that arrays of characters are handled like an array and not like a string.
+
Notice that the above functions should always be called with
qualification (boost::
) to prevent unintended
Argument Dependent Lookup (ADL).
diff --git a/doc/headers.html b/doc/headers.html
index 1539ae8..69987ce 100755
--- a/doc/headers.html
+++ b/doc/headers.html
@@ -50,7 +50,7 @@
>range_iterator
<boost/range/mutable_iterator.hpp>
<boost/range/size_type.hpp>
<boost/range/pointer.hpp>
<boost/range/category.hpp>
<boost/range/distance.hpp>
<boost/range/size.hpp>
<boost/range/rbegin.hpp>
<boost/range/as_array.hpp>
<boost/range/as_literal.hpp>
- (C) Copyright Thorsten Ottosen 2003-2004 + (C) Copyright Thorsten Ottosen 2003-2007
const_iterator
is.
class iterator_range
{
public: // Forward Range types
- typedef ForwardTraversalIterator iterator;
- typedef ForwardTraversalIterator const_iterator;
-
+ typedef ForwardTraversalIterator iterator;
+ typedef ForwardTraversalIterator const_iterator;
+ typedef iterator_difference<iterator>::type difference_type;
+
public: // construction, assignment
template< class ForwardTraversalIterator2 >
iterator_range( ForwardTraversalIterator2 Begin, ForwardTraversalIterator2 End );
@@ -99,23 +100,24 @@ corresponding const_iterator
is.
iterator_range& operator=( const ForwardRange& r );
public: // Forward Range functions
- iterator begin() const;
- iterator end() const;
- size_type size() const;
- bool empty() const;
+ iterator begin() const;
+ iterator end() const;
+ difference_type size() const;
+ bool empty() const;
public: // convenience
- operator unspecified_bool_type() const;
- bool operator unspecified_bool_type() const;
+ bool equal( const iterator_range& ) ( const iterator_range& ) const;
- referencefront() const;
- reference back() const;
+ reference front() const;
+ reference back() const;
+ iterator_range& advance_begin( difference_type n );
+ iterator_range& advance_end( difference_type n );
// for Random Access Range only:
- value_type& operator[]( size_type at ) const;
- value_typecial>& operator()( size_type at ) const;
+ reference operator[]( difference_type at ) const;
+ value_type operator()( difference_type at ) const;
};
// stream output
@@ -168,11 +170,11 @@ class=keyword>const;
ForwardTraversalIterator End );
template< class ForwardRange >
- iterator_range< typename iterator<ForwardRange>::type >
+ iterator_range< typename range_iterator<ForwardRange>::type >
make_iterator_range( ForwardRange& r );
template< class ForwardRange >
- iterator_range< typename const_iterator<ForwardRange>::type >
+ iterator_range< typename range_iterator<const ForwardRange>::type >
make_iterator_range( const ForwardRange& r );
template< class Range >
@@ -182,7 +184,7 @@ class=keyword>const;
typename range_difference<Range>::type advance_end );
template< class Range >
- iterator_range< typename range_const_iterator<Range>::type >
+ iterator_range< typename range_iterator<const Range>::type >
make_iterator_range( const Range& r,
typename range_difference<Range>::type advance_begin,
typename range_difference<Range>::type advance_end );
@@ -286,12 +288,14 @@ class can propagate constness since it knows what a corresponding
namespace boost
{
template< class ForwardRange >
- class sub_range : public iterator_range< typename range_result_iterator<ForwardRange>::type >
+ class sub_range : public iterator_range< typename range_iterator<ForwardRange>::type >
{
public:
- typedef typename range_result_iterator<ForwardRangeiterator_range
@@ -339,15 +343,15 @@ store the result
from this algorithm. Here is an example of how we can do it with and without
sub_range
- std::string str("hello"); - iterator_range<std::string::iterator> ir = find_first( str, "ll" ); - sub_range<std::string> sub = find_first( str, "ll" ); + std::string str("hello"); + iterator_range<std::string::iterator> ir = find_first( str, as_literal("ll") ); + sub_range<std::string> sub = find_first( str, as_literal("ll") );
- (C) Copyright Thorsten Ottosen 2003-2004 + (C) Copyright Thorsten Ottosen 2003-2007