From d4658af6d79d8107da898cfe74553e81b4f44fd3 Mon Sep 17 00:00:00 2001 From: Jeremiah Willcock Date: Tue, 8 Jun 2010 23:28:23 +0000 Subject: [PATCH] Moved Collection concept into Boost.ConceptCheck; moved other MultiArray concepts into boost::multi_array_concepts and documented them in reference.xml (do not know how to rebuild HTML from that); fixes #4032 [SVN r62611] --- include/boost/concept_check.hpp | 38 +++++++++++++++++++++++++++++++++ reference.htm | 4 ++++ 2 files changed, 42 insertions(+) diff --git a/include/boost/concept_check.hpp b/include/boost/concept_check.hpp index 7ee3036..58bd8b2 100644 --- a/include/boost/concept_check.hpp +++ b/include/boost/concept_check.hpp @@ -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::function_requires >(); + boost::function_requires >(); + 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 diff --git a/reference.htm b/reference.htm index a8a2aa0..7c113e6 100644 --- a/reference.htm +++ b/reference.htm @@ -279,6 +279,10 @@ struct SortedAssociativeContainer; + +template <class C> +struct Collection;

Basic Archetype