Merged r47768 (new example) and r62611 (fix for bug #4032) from trunk; refs #4032

[SVN r65770]
This commit is contained in:
Jeremiah Willcock
2010-10-05 18:15:27 +00:00
parent 45d722b5c3
commit 807fcd7b97
2 changed files with 42 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
//
// (C) Copyright Jeremy Siek 2000.
// Copyright 2002 The Trustees of Indiana University.
//
// 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)
@@ -999,6 +1001,42 @@ namespace boost
// HashedAssociativeContainer
BOOST_concept(Collection,(C))
{
BOOST_CONCEPT_USAGE(Collection)
{
boost::function_requires<boost::InputIteratorConcept<iterator> >();
boost::function_requires<boost::InputIteratorConcept<const_iterator> >();
boost::function_requires<boost::CopyConstructibleConcept<value_type> >();
const_constraints(c);
i = c.begin();
i = c.end();
c.swap(c);
}
void const_constraints(const C& c) {
ci = c.begin();
ci = c.end();
n = c.size();
b = c.empty();
}
private:
typedef typename C::value_type value_type;
typedef typename C::iterator iterator;
typedef typename C::const_iterator const_iterator;
typedef typename C::reference reference;
typedef typename C::const_reference const_reference;
// typedef typename C::pointer pointer;
typedef typename C::difference_type difference_type;
typedef typename C::size_type size_type;
C c;
bool b;
iterator i;
const_iterator ci;
size_type n;
};
} // namespace boost
# include <boost/concept/detail/concept_undef.hpp>

View File

@@ -279,6 +279,10 @@ struct <a href=
template &lt;class C&gt;
struct <a href=
"http://www.sgi.com/tech/stl/SortedAssociativeContainer.html">SortedAssociativeContainer</a>;
template &lt;class C&gt;
struct <a href=
"../utility/Collection.html">Collection</a>;
</pre>
<h3><a name="basic-archetype" id="basic-archetype">Basic Archetype