forked from boostorg/range
Compare commits
11 Commits
svn-branch
...
svn-branch
Author | SHA1 | Date | |
---|---|---|---|
dbc625549d | |||
7f604c6126 | |||
7c0d73b8cf | |||
405ebd8cca | |||
94b45ef51e | |||
e115ac1006 | |||
8b712359a2 | |||
428e72ed22 | |||
73db2a05b6 | |||
507d1e8075 | |||
d31787daae |
@ -1,3 +1,13 @@
|
||||
#// Boost.Range library
|
||||
#//
|
||||
#// Copyright Thorsten Ottosen 2003-2008. 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)
|
||||
#//
|
||||
#// For more information, see http://www.boost.org/libs/range/
|
||||
#//
|
||||
|
||||
|
||||
use-project boost : $(BOOST_ROOT) ;
|
||||
|
||||
|
@ -493,7 +493,7 @@ class=identifier>T</span><span class=special>& </span><span class=identifier
|
||||
</p>
|
||||
<p>
|
||||
<code>as_literal()</code> can be used <i>internally</i> in string
|
||||
algorithm librararies to such that arrays of characters are
|
||||
algorithm librararies such that arrays of characters are
|
||||
handled correctly.
|
||||
</p>
|
||||
<p>
|
||||
@ -745,7 +745,13 @@ class=identifier>T</span><span class=special>& </span><span class=identifier
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2007
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
<br>
|
||||
<br>
|
||||
|
@ -25,17 +25,17 @@
|
||||
[def __implementation_of_metafunctions__ [link boost.range.reference.semantics.metafunctions implementation of metafunctions]]
|
||||
[def __implementation_of_functions__ [link boost.range.reference.semantics.functions implementation of functions]]
|
||||
|
||||
[def __single_pass_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#singls-pass-iterators-lib-single-pass-iterators Single Pass Iterator]]
|
||||
[def __forward_traversal_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators Forward Traversal Iterator]]
|
||||
[def __bidirectional_traversal_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators Bidirectional Traversal Iterator]]
|
||||
[def __random_access_traversal_iterator__ [@../../libs/iterator/doc/new-iter-concepts.html#random-access-traversal-iterators-lib-random-access-traversal-iterators Random Access Traversal Iterator]]
|
||||
[def __new_style_iterators__ [@../../libs/iterator/doc/new-iter-concepts.html new style iterators]]
|
||||
[def __iterator_concepts__ [@../../libs/iterator/doc/iterator_concepts.html Iterator concepts]]
|
||||
[def __single_pass_iterator__ [@/libs/iterator/doc/new-iter-concepts.html#singls-pass-iterators-lib-single-pass-iterators Single Pass Iterator]]
|
||||
[def __forward_traversal_iterator__ [@/libs/iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators Forward Traversal Iterator]]
|
||||
[def __bidirectional_traversal_iterator__ [@/libs/iterator/doc/new-iter-concepts.html#bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators Bidirectional Traversal Iterator]]
|
||||
[def __random_access_traversal_iterator__ [@/libs/iterator/doc/new-iter-concepts.html#random-access-traversal-iterators-lib-random-access-traversal-iterators Random Access Traversal Iterator]]
|
||||
[def __new_style_iterators__ [@/libs/iterator/doc/new-iter-concepts.html new style iterators]]
|
||||
[def __iterator_concepts__ [@/libs/iterator/doc/iterator_concepts.html Iterator concepts]]
|
||||
|
||||
[def __container__ [@http://www.sgi.com/Technology/STL/Container.html Container]]
|
||||
[def __metafunctions__ [@../../libs/mpl/doc/refmanual/metafunction.html metafunctions]]
|
||||
[def __concept_check__ [@../../libs/concept_check/index.html Boost Concept Check library]]
|
||||
[def __boost_array__ [@../../libs/array/index.html boost::array]]
|
||||
[def __metafunctions__ [@/libs/mpl/doc/refmanual/metafunction.html metafunctions]]
|
||||
[def __concept_check__ [@/libs/concept_check/index.html Boost Concept Check library]]
|
||||
[def __boost_array__ [@/libs/array/index.html boost::array]]
|
||||
[def __the_forwarding_problem__ [@http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm The Forwarding Problem]]
|
||||
|
||||
|
||||
@ -134,9 +134,9 @@ The motivation for the Range concept is that there are many useful Container-lik
|
||||
|
||||
Because of the second requirement, a Range object must be passed by (const or non-const) reference in generic code.
|
||||
|
||||
The operations that can be performed on a Range is dependent on the [@../../iterator/doc/new-iter-concepts.html#iterator-traversal-concepts-lib-iterator-traversal traversal category] of the underlying iterator type. Therefore the range concepts are named to reflect which traversal category its iterators support. See also terminology and style guidelines. for more information about naming of ranges.
|
||||
The operations that can be performed on a Range is dependent on the [@/libs/range/iterator/doc/new-iter-concepts.html#iterator-traversal-concepts-lib-iterator-traversal traversal category] of the underlying iterator type. Therefore the range concepts are named to reflect which traversal category its iterators support. See also terminology and style guidelines. for more information about naming of ranges.
|
||||
|
||||
The concepts described below specifies associated types as [@../../libs/mpl/doc/refmanual/metafunction.html metafunctions] and all functions as free-standing functions to allow for a layer of indirection.
|
||||
The concepts described below specifies associated types as [@/libs/mpl/doc/refmanual/metafunction.html metafunctions] and all functions as free-standing functions to allow for a layer of indirection.
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -332,7 +332,7 @@ __bidirectional_range__
|
||||
|
||||
[section Concept Checking]
|
||||
|
||||
Each of the range concepts has a corresponding concept checking class in the file [@../../boost/range/concepts.hpp `boost/range/concepts.hpp`]. These classes may be used in conjunction with the __concept_check__ to insure that the type of a template parameter is compatible with a range concept. If not, a meaningful compile time error is generated. Checks are provided for the range concepts related to iterator traversal categories. For example, the following line checks that the type `T` models the __forward_range__ concept.
|
||||
Each of the range concepts has a corresponding concept checking class in the file [@/boost/range/concepts.hpp `boost/range/concepts.hpp`]. These classes may be used in conjunction with the __concept_check__ to insure that the type of a template parameter is compatible with a range concept. If not, a meaningful compile time error is generated. Checks are provided for the range concepts related to iterator traversal categories. For example, the following line checks that the type `T` models the __forward_range__ concept.
|
||||
|
||||
``
|
||||
function_requires<ForwardRangeConcept<T> >();
|
||||
|
@ -1,3 +1,13 @@
|
||||
// Boost.Range library
|
||||
//
|
||||
// Copyright Thorsten Ottosen 2003-2008. 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)
|
||||
//
|
||||
// For more information, see http://www.boost.org/libs/range/
|
||||
//
|
||||
|
||||
#include <boost/range.hpp>
|
||||
#include <iterator> // for std::iterator_traits, std::distance()
|
||||
|
||||
|
9
doc/examples.html
Executable file → Normal file
9
doc/examples.html
Executable file → Normal file
@ -41,9 +41,16 @@
|
||||
<li> <a href="../test/array.cpp">array.cpp</a>
|
||||
</ul>
|
||||
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2004
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
11
doc/faq.html
Executable file → Normal file
11
doc/faq.html
Executable file → Normal file
@ -114,9 +114,16 @@ Cool indeed!
|
||||
</ol>
|
||||
|
||||
|
||||
<hr>
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2004
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
9
doc/headers.html
Executable file → Normal file
9
doc/headers.html
Executable file → Normal file
@ -173,7 +173,14 @@
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2007
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
17
doc/history_ack.html
Executable file → Normal file
17
doc/history_ack.html
Executable file → Normal file
@ -18,10 +18,10 @@
|
||||
|
||||
<h2 >History and Acknowledgement</h2><a name="History" ></a>
|
||||
<p >
|
||||
The library have been under way for a long time. Dietmar K<>hl originally
|
||||
intended to submit an <code >array_traits</code> class template which
|
||||
had most of the functionality present now, but only for arrays and standard
|
||||
containers.
|
||||
The library was under way for a long time. Dietmar K<>hl originally intended
|
||||
to submit an <code >array_traits</code> class template which had most of
|
||||
the functionality present now, but only for arrays and standard containers.
|
||||
I believe this was back in 2001 or 2002.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -61,7 +61,14 @@ C++ standard: <blockquote>
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2006
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
12
doc/intro.html
Executable file → Normal file
12
doc/intro.html
Executable file → Normal file
@ -63,8 +63,7 @@ free-standing functions so syntactic and/or semantic differences can be removed.
|
||||
|
||||
</ul>
|
||||
</p>
|
||||
<p >
|
||||
Below are given a small example (the complete example can be found <a
|
||||
<p > Below is given a small example (the complete example can be found <a
|
||||
href="../test/algorithm_example.cpp" target="_self" >here</a>): <blockquote>
|
||||
<pre >
|
||||
<span class=comment>
|
||||
@ -136,7 +135,14 @@ Notice that we have to
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2007
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
13
doc/portability.html
Executable file → Normal file
13
doc/portability.html
Executable file → Normal file
@ -35,7 +35,7 @@ href="http://boost.sourceforge.net/regression-logs/developer/range.html">here</a
|
||||
</p>
|
||||
<p >
|
||||
Notice also that some compilers cannot do function template ordering properly.
|
||||
In that case one must rely of <a
|
||||
In that case one must rely on <a
|
||||
href="boost_range.html#range_iterator"><code >range_iterator</code></a>
|
||||
and a single function definition instead of overloaded versions for const and
|
||||
non-const arguments.
|
||||
@ -73,11 +73,18 @@ href="http://boost.sourceforge.net/regression-logs/developer/range.html">here</a
|
||||
</ol>
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2004
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
36
doc/range.html
Executable file → Normal file
36
doc/range.html
Executable file → Normal file
@ -352,34 +352,16 @@ href="../../iterator/doc/new-iter-concepts.html#random-access-traversal-iterator
|
||||
<p> <a href="../../concept_check/concept_check.htm">Boost Concept Check library</a></p>
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<!--
|
||||
<h3>Notes</h3>
|
||||
|
||||
|
||||
<P>
|
||||
<A name="1">[1]</A>
|
||||
|
||||
The reference type does not have to be a real C++ reference. The requirements of
|
||||
the reference type is that it <i>behaves</i> like a real reference. Hence the
|
||||
reference type must be convertible to the value_type and assignment through
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<HR>
|
||||
<br>
|
||||
-->
|
||||
|
||||
<TABLE>
|
||||
<TR valign="top">
|
||||
<TD nowrap>Copyright © 2000</TD>
|
||||
<TD><A HREF=http://www.boost.org/people/jeremy_siek.htm>Jeremy Siek</A>
|
||||
</TR>
|
||||
<tr >
|
||||
<TD nowrap>Copyright © 2004-2007</TD>
|
||||
<TD>Thorsten Ottosen.
|
||||
</TABLE>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
11
doc/style.css
Executable file → Normal file
11
doc/style.css
Executable file → Normal file
@ -1,3 +1,14 @@
|
||||
/*
|
||||
// Boost.Range library
|
||||
//
|
||||
// Copyright Thorsten Ottosen 2003-2008. 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)
|
||||
//
|
||||
// For more information, see http://www.boost.org/libs/range/
|
||||
//
|
||||
*/
|
||||
pre{
|
||||
BORDER-RIGHT: gray 1pt solid;
|
||||
PADDING-RIGHT: 2pt;
|
||||
|
8
doc/style.html
Executable file → Normal file
8
doc/style.html
Executable file → Normal file
@ -104,9 +104,15 @@
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2004
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
@ -33,11 +33,12 @@
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
The <code>iterator_range</code> class is templated on an
|
||||
<a href="../../iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators">Forward
|
||||
The <code>iterator_range</code> class is templated on a <a
|
||||
href="../../iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators">Forward
|
||||
Traversal Iterator</a> and should be used whenever fairly general code is needed.
|
||||
The <code>sub_range</code> class is templated on an <a href="range.html#forward_range">Forward
|
||||
Range</a> and it is less general, but a bit easier to use since its template
|
||||
The <code>sub_range</code> class is templated on a <a
|
||||
href="range.html#forward_range">Forward Range</a> and it is less general,
|
||||
but a bit easier to use since its template
|
||||
argument is easier to specify. The biggest difference is, however, that a
|
||||
<code>sub_range</code> can propagate constness because it knows what a
|
||||
corresponding <code>const_iterator</code> is. </p>
|
||||
@ -349,10 +350,17 @@ store the result
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
<p>
|
||||
(C) Copyright Thorsten Ottosen 2003-2007
|
||||
</p>
|
||||
<hr>
|
||||
<p>
|
||||
© <a name="Copyright" id="Copyright">Copyright</a> Thorsten Ottosen 2008.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See
|
||||
accompanying file LICENSE_1_0.txt or copy
|
||||
at <a href=
|
||||
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
0
include/boost/range.hpp
Executable file → Normal file
0
include/boost/range.hpp
Executable file → Normal file
0
include/boost/range/as_array.hpp
Executable file → Normal file
0
include/boost/range/as_array.hpp
Executable file → Normal file
6
include/boost/range/as_literal.hpp
Executable file → Normal file
6
include/boost/range/as_literal.hpp
Executable file → Normal file
@ -15,7 +15,7 @@
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
#if BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||
#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||
#include <boost/range/detail/as_literal.hpp>
|
||||
#else
|
||||
|
||||
@ -116,14 +116,14 @@ namespace boost
|
||||
|
||||
|
||||
template< class Char, std::size_t sz >
|
||||
inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
|
||||
inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
|
||||
{
|
||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) && __BORLANDC__ >= 0x590
|
||||
return boost::make_iterator_range<const Char*>( arr, arr + sz - 1 );
|
||||
#else
|
||||
return boost::make_iterator_range( arr, arr + sz - 1 );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||
|
0
include/boost/range/begin.hpp
Executable file → Normal file
0
include/boost/range/begin.hpp
Executable file → Normal file
0
include/boost/range/category.hpp
Executable file → Normal file
0
include/boost/range/category.hpp
Executable file → Normal file
0
include/boost/range/concepts.hpp
Executable file → Normal file
0
include/boost/range/concepts.hpp
Executable file → Normal file
0
include/boost/range/config.hpp
Executable file → Normal file
0
include/boost/range/config.hpp
Executable file → Normal file
0
include/boost/range/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/const_reverse_iterator.hpp
Executable file → Normal file
0
include/boost/range/const_reverse_iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/as_literal.hpp
Executable file → Normal file
0
include/boost/range/detail/as_literal.hpp
Executable file → Normal file
0
include/boost/range/detail/begin.hpp
Executable file → Normal file
0
include/boost/range/detail/begin.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits_detail.hpp
Executable file → Normal file
0
include/boost/range/detail/collection_traits_detail.hpp
Executable file → Normal file
0
include/boost/range/detail/common.hpp
Executable file → Normal file
0
include/boost/range/detail/common.hpp
Executable file → Normal file
0
include/boost/range/detail/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/const_iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/detail_str.hpp
Executable file → Normal file
0
include/boost/range/detail/detail_str.hpp
Executable file → Normal file
0
include/boost/range/detail/difference_type.hpp
Executable file → Normal file
0
include/boost/range/detail/difference_type.hpp
Executable file → Normal file
0
include/boost/range/detail/empty.hpp
Executable file → Normal file
0
include/boost/range/detail/empty.hpp
Executable file → Normal file
0
include/boost/range/detail/end.hpp
Executable file → Normal file
0
include/boost/range/detail/end.hpp
Executable file → Normal file
4
include/boost/range/detail/implementation_help.hpp
Executable file → Normal file
4
include/boost/range/detail/implementation_help.hpp
Executable file → Normal file
@ -25,6 +25,8 @@ namespace boost
|
||||
{
|
||||
namespace range_detail
|
||||
{
|
||||
template <typename T>
|
||||
inline void boost_range_silence_warning( const T& ) { }
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
// end() help
|
||||
@ -82,12 +84,14 @@ namespace boost
|
||||
template< class T, std::size_t sz >
|
||||
inline std::size_t array_size( T BOOST_RANGE_ARRAY_REF()[sz] )
|
||||
{
|
||||
boost_range_silence_warning( boost_range_array );
|
||||
return sz;
|
||||
}
|
||||
|
||||
template< class T, std::size_t sz >
|
||||
inline std::size_t array_size( const T BOOST_RANGE_ARRAY_REF()[sz] )
|
||||
{
|
||||
boost_range_silence_warning( boost_range_array );
|
||||
return sz;
|
||||
}
|
||||
|
||||
|
0
include/boost/range/detail/iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/iterator.hpp
Executable file → Normal file
0
include/boost/range/detail/remove_extent.hpp
Executable file → Normal file
0
include/boost/range/detail/remove_extent.hpp
Executable file → Normal file
0
include/boost/range/detail/sfinae.hpp
Executable file → Normal file
0
include/boost/range/detail/sfinae.hpp
Executable file → Normal file
0
include/boost/range/detail/size.hpp
Executable file → Normal file
0
include/boost/range/detail/size.hpp
Executable file → Normal file
0
include/boost/range/detail/size_type.hpp
Executable file → Normal file
0
include/boost/range/detail/size_type.hpp
Executable file → Normal file
0
include/boost/range/detail/sizer.hpp
Executable file → Normal file
0
include/boost/range/detail/sizer.hpp
Executable file → Normal file
0
include/boost/range/detail/str_types.hpp
Executable file → Normal file
0
include/boost/range/detail/str_types.hpp
Executable file → Normal file
0
include/boost/range/detail/value_type.hpp
Executable file → Normal file
0
include/boost/range/detail/value_type.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/end.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/end.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/size.hpp
Executable file → Normal file
0
include/boost/range/detail/vc6/size.hpp
Executable file → Normal file
0
include/boost/range/difference_type.hpp
Executable file → Normal file
0
include/boost/range/difference_type.hpp
Executable file → Normal file
0
include/boost/range/distance.hpp
Executable file → Normal file
0
include/boost/range/distance.hpp
Executable file → Normal file
0
include/boost/range/empty.hpp
Executable file → Normal file
0
include/boost/range/empty.hpp
Executable file → Normal file
0
include/boost/range/end.hpp
Executable file → Normal file
0
include/boost/range/end.hpp
Executable file → Normal file
0
include/boost/range/functions.hpp
Executable file → Normal file
0
include/boost/range/functions.hpp
Executable file → Normal file
0
include/boost/range/iterator.hpp
Executable file → Normal file
0
include/boost/range/iterator.hpp
Executable file → Normal file
34
include/boost/range/iterator_range.hpp
Executable file → Normal file
34
include/boost/range/iterator_range.hpp
Executable file → Normal file
@ -11,8 +11,15 @@
|
||||
#ifndef BOOST_RANGE_ITERATOR_RANGE_HPP
|
||||
#define BOOST_RANGE_ITERATOR_RANGE_HPP
|
||||
|
||||
// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for Cray X1 patch.
|
||||
#include <boost/config.hpp> // Define __STL_CONFIG_H, if appropriate.
|
||||
#include <boost/detail/workaround.hpp>
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4996 )
|
||||
#endif
|
||||
|
||||
// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for Cray X1 patch.
|
||||
#ifndef BOOST_OLD_IOSTREAMS
|
||||
# if defined(__STL_CONFIG_H) && \
|
||||
!defined (__STL_USE_NEW_IOSTREAMS) && !defined(__crayx1) \
|
||||
@ -21,12 +28,13 @@
|
||||
# endif
|
||||
#endif // #ifndef BOOST_OLD_IOSTREAMS
|
||||
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
#include <boost/iterator/iterator_traits.hpp>
|
||||
#include <boost/type_traits/is_abstract.hpp>
|
||||
#include <boost/range/functions.hpp>
|
||||
#include <boost/range/iterator.hpp>
|
||||
#include <boost/range/difference_type.hpp>
|
||||
#include <boost/iterator/iterator_traits.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <iterator>
|
||||
#include <algorithm>
|
||||
#ifndef _STLP_NO_IOSTREAMS
|
||||
@ -38,10 +46,6 @@
|
||||
#endif // _STLP_NO_IOSTREAMS
|
||||
#include <cstddef>
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) || BOOST_WORKAROUND(BOOST_MSVC, == 1400)
|
||||
#pragma warning( disable : 4996 )
|
||||
#endif
|
||||
|
||||
/*! \file
|
||||
Defines the \c iterator_class and related functions.
|
||||
\c iterator_range is a simple wrapper of iterator pair idiom. It provides
|
||||
@ -163,6 +167,12 @@ namespace boost
|
||||
//! iterator type
|
||||
typedef IteratorT iterator;
|
||||
|
||||
private: // for return value of operator()()
|
||||
typedef BOOST_DEDUCED_TYPENAME
|
||||
boost::mpl::if_< boost::is_abstract<value_type>,
|
||||
reference, value_type >::type abstract_value_type;
|
||||
|
||||
public:
|
||||
iterator_range() : m_Begin( iterator() ), m_End( iterator() )
|
||||
#ifndef NDEBUG
|
||||
, singular( true )
|
||||
@ -350,8 +360,8 @@ namespace boost
|
||||
// When storing transform iterators, operator[]()
|
||||
// fails because it returns by reference. Therefore
|
||||
// operator()() is provided for these cases.
|
||||
//
|
||||
value_type operator()( difference_type at ) const
|
||||
//
|
||||
abstract_value_type operator()( difference_type at ) const
|
||||
{
|
||||
BOOST_ASSERT( at >= 0 && at < size() );
|
||||
return m_Begin[at];
|
||||
@ -639,5 +649,9 @@ namespace boost
|
||||
|
||||
#undef BOOST_OLD_IOSTREAMS
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
|
||||
#pragma warning( pop )
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
0
include/boost/range/metafunctions.hpp
Executable file → Normal file
0
include/boost/range/metafunctions.hpp
Executable file → Normal file
0
include/boost/range/mutable_iterator.hpp
Executable file → Normal file
0
include/boost/range/mutable_iterator.hpp
Executable file → Normal file
0
include/boost/range/pointer.hpp
Executable file → Normal file
0
include/boost/range/pointer.hpp
Executable file → Normal file
0
include/boost/range/rbegin.hpp
Executable file → Normal file
0
include/boost/range/rbegin.hpp
Executable file → Normal file
0
include/boost/range/reference.hpp
Executable file → Normal file
0
include/boost/range/reference.hpp
Executable file → Normal file
0
include/boost/range/rend.hpp
Executable file → Normal file
0
include/boost/range/rend.hpp
Executable file → Normal file
0
include/boost/range/result_iterator.hpp
Executable file → Normal file
0
include/boost/range/result_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_result_iterator.hpp
Executable file → Normal file
0
include/boost/range/reverse_result_iterator.hpp
Executable file → Normal file
0
include/boost/range/size.hpp
Executable file → Normal file
0
include/boost/range/size.hpp
Executable file → Normal file
0
include/boost/range/size_type.hpp
Executable file → Normal file
0
include/boost/range/size_type.hpp
Executable file → Normal file
12
include/boost/range/sub_range.hpp
Executable file → Normal file
12
include/boost/range/sub_range.hpp
Executable file → Normal file
@ -11,12 +11,12 @@
|
||||
#ifndef BOOST_RANGE_SUB_RANGE_HPP
|
||||
#define BOOST_RANGE_SUB_RANGE_HPP
|
||||
|
||||
#include <boost/detail/workaround.hpp>
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) || BOOST_WORKAROUND(BOOST_MSVC, == 1400)
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4996 )
|
||||
#endif
|
||||
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/range/config.hpp>
|
||||
#include <boost/range/iterator_range.hpp>
|
||||
#include <boost/range/value_type.hpp>
|
||||
@ -46,7 +46,7 @@ namespace boost
|
||||
sub_range() : base()
|
||||
{ }
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) || BOOST_WORKAROUND(BOOST_MSVC, == 1400)
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500) )
|
||||
sub_range( const sub_range& r )
|
||||
: base( static_cast<const base&>( r ) )
|
||||
{ }
|
||||
@ -163,5 +163,9 @@ namespace boost
|
||||
|
||||
} // namespace 'boost'
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
|
||||
#pragma warning( pop )
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
0
include/boost/range/value_type.hpp
Executable file → Normal file
0
include/boost/range/value_type.hpp
Executable file → Normal file
0
index.html
Executable file → Normal file
0
index.html
Executable file → Normal file
0
test/adl_conformance.cpp
Executable file → Normal file
0
test/adl_conformance.cpp
Executable file → Normal file
0
test/adl_conformance_no_using.cpp
Executable file → Normal file
0
test/adl_conformance_no_using.cpp
Executable file → Normal file
0
test/algorithm_example.cpp
Executable file → Normal file
0
test/algorithm_example.cpp
Executable file → Normal file
0
test/array.cpp
Executable file → Normal file
0
test/array.cpp
Executable file → Normal file
0
test/compat2.cpp
Executable file → Normal file
0
test/compat2.cpp
Executable file → Normal file
0
test/compat3.cpp
Executable file → Normal file
0
test/compat3.cpp
Executable file → Normal file
0
test/const_ranges.cpp
Executable file → Normal file
0
test/const_ranges.cpp
Executable file → Normal file
0
test/extension_mechanism.cpp
Executable file → Normal file
0
test/extension_mechanism.cpp
Executable file → Normal file
0
test/iterator_pair.cpp
Executable file → Normal file
0
test/iterator_pair.cpp
Executable file → Normal file
0
test/iterator_range.cpp
Executable file → Normal file
0
test/iterator_range.cpp
Executable file → Normal file
0
test/mfc.cpp
Executable file → Normal file
0
test/mfc.cpp
Executable file → Normal file
8
test/partial_workaround.cpp
Executable file → Normal file
8
test/partial_workaround.cpp
Executable file → Normal file
@ -10,6 +10,8 @@
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/range/detail/implementation_help.hpp>
|
||||
#include <boost/test/test_tools.hpp>
|
||||
|
||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
||||
# pragma warn -8091 // supress warning in Boost.Test
|
||||
@ -30,7 +32,6 @@
|
||||
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/type_traits.hpp>
|
||||
#include <boost/test/test_tools.hpp>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
@ -91,6 +92,11 @@ void check_partial_workaround()
|
||||
|
||||
void check_partial_workaround()
|
||||
{
|
||||
//
|
||||
// test if warnings are generated
|
||||
//
|
||||
std::size_t s = boost::range_detail::array_size( "foo" );
|
||||
BOOST_CHECK_EQUAL( s, 4u );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
0
test/reversible_range.cpp
Executable file → Normal file
0
test/reversible_range.cpp
Executable file → Normal file
0
test/std_container.cpp
Executable file → Normal file
0
test/std_container.cpp
Executable file → Normal file
0
test/string.cpp
Executable file → Normal file
0
test/string.cpp
Executable file → Normal file
0
test/sub_range.cpp
Executable file → Normal file
0
test/sub_range.cpp
Executable file → Normal file
Reference in New Issue
Block a user