// Copyright 2002 The Trustees of Indiana University. // 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) // Boost.MultiArray Library // Authors: Ronald Garcia // Jeremy Siek // Andrew Lumsdaine // See http://www.boost.org/libs/multi_array for documentation. #ifndef COLLECTION_CONCEPT_RG103101_HPP #define COLLECTION_CONCEPT_RG103101_HPP #include "boost/concept_check.hpp" namespace boost { namespace detail { namespace multi_array { //=========================================================================== // Collection Concept template struct CollectionConcept { typedef typename Collection::value_type value_type; typedef typename Collection::iterator iterator; typedef typename Collection::const_iterator const_iterator; typedef typename Collection::reference reference; typedef typename Collection::const_reference const_reference; // typedef typename Collection::pointer pointer; typedef typename Collection::difference_type difference_type; typedef typename Collection::size_type size_type; void constraints() { 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 Collection& c) { ci = c.begin(); ci = c.end(); n = c.size(); b = c.empty(); } Collection c; bool b; iterator i; const_iterator ci; size_type n; }; } } } #endif // COLLECTION_CONCEPT_RG103101_HPP