diff --git a/include/boost/iterator/iterator_concepts.hpp b/include/boost/iterator/iterator_concepts.hpp index 663917e..50e5546 100644 --- a/include/boost/iterator/iterator_concepts.hpp +++ b/include/boost/iterator/iterator_concepts.hpp @@ -98,38 +98,17 @@ namespace boost_concepts { }; template - class ReadableLvalueIteratorConcept + class LvalueIteratorConcept { public: typedef typename boost::detail::iterator_traits::value_type value_type; - void constraints() { - boost::function_requires< ReadableIteratorConcept >(); - const value_type& v = *i; - boost::ignore_unused_variable_warning(v); - } + const value_type& r = *i; + } Iterator i; }; - template - class WritableLvalueIteratorConcept { - public: - typedef typename boost::detail::iterator_traits::value_type value_type; - typedef typename boost::detail::iterator_traits::reference reference; - - void constraints() { - boost::function_requires< - ReadableLvalueIteratorConcept >(); - boost::function_requires< - WritableIteratorConcept >(); - boost::function_requires< - SwappableIteratorConcept >(); - - - BOOST_STATIC_ASSERT((boost::is_same::value)); - } - }; //=========================================================================== // Iterator Traversal Concepts diff --git a/test/concept_tests.cpp b/test/concept_tests.cpp index 1a1f254..dd99600 100644 --- a/test/concept_tests.cpp +++ b/test/concept_tests.cpp @@ -61,22 +61,30 @@ main() (void)derived; boost::function_requires< - boost_concepts::WritableLvalueIteratorConcept >(); + boost_concepts::WritableIteratorConcept >(); + boost::function_requires< + boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::RandomAccessTraversalConcept >(); boost::function_requires< - boost_concepts::ReadableLvalueIteratorConcept >(); + boost_concepts::ReadableIteratorConcept >(); + boost::function_requires< + boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::RandomAccessTraversalConcept >(); boost::function_requires< - boost_concepts::WritableLvalueIteratorConcept >(); + boost_concepts::WritableIteratorConcept >(); + boost::function_requires< + boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::RandomAccessTraversalConcept >(); boost::function_requires< - boost_concepts::WritableLvalueIteratorConcept >(); + boost_concepts::WritableIteratorConcept >(); + boost::function_requires< + boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::RandomAccessTraversalConcept >(); diff --git a/test/filter_iterator_test.cpp b/test/filter_iterator_test.cpp index 8b4d190..11c260c 100644 --- a/test/filter_iterator_test.cpp +++ b/test/filter_iterator_test.cpp @@ -125,7 +125,8 @@ int main() > BaseIter; typedef boost::filter_iterator Iter; boost::function_requires< boost::ForwardIteratorConcept >(); - boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::ReadableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::ForwardTraversalConcept >(); } { @@ -136,7 +137,8 @@ int main() > BaseIter; typedef boost::filter_iterator Iter; boost::function_requires< boost::Mutable_ForwardIteratorConcept >(); - boost::function_requires< boost_concepts::WritableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::WritableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::ForwardTraversalConcept >(); } #endif diff --git a/test/iterator_adaptor_cc.cpp b/test/iterator_adaptor_cc.cpp index cae2a5a..67683f0 100644 --- a/test/iterator_adaptor_cc.cpp +++ b/test/iterator_adaptor_cc.cpp @@ -10,7 +10,8 @@ int main() typedef boost::reverse_iterator rev_iter; typedef boost::reverse_iterator c_rev_iter; - boost::function_requires< boost_concepts::WritableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::WritableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::RandomAccessTraversalConcept >(); boost::function_requires< boost::RandomAccessIteratorConcept >(); boost::function_requires< boost_concepts::InteroperableIteratorConcept >(); @@ -28,7 +29,8 @@ int main() typedef boost::reverse_iterator::iterator> rev_iter; typedef boost::reverse_iterator::const_iterator> c_rev_iter; - boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::ReadableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::BidirectionalTraversalConcept >(); boost::function_requires< boost::BidirectionalIteratorConcept >(); boost::function_requires< boost_concepts::InteroperableIteratorConcept >(); diff --git a/test/iterator_archetype_cc.cpp b/test/iterator_archetype_cc.cpp index d5409ce..6a71551 100644 --- a/test/iterator_archetype_cc.cpp +++ b/test/iterator_archetype_cc.cpp @@ -41,7 +41,8 @@ int main() , boost::random_access_traversal_tag > iter; - boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::ReadableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::RandomAccessTraversalConcept >(); } { @@ -51,7 +52,8 @@ int main() , boost::random_access_traversal_tag > iter; - boost::function_requires< boost_concepts::WritableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::WritableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::RandomAccessTraversalConcept >(); } diff --git a/test/reverse_iterator_test.cpp b/test/reverse_iterator_test.cpp index 5c3d50e..6686d30 100644 --- a/test/reverse_iterator_test.cpp +++ b/test/reverse_iterator_test.cpp @@ -31,13 +31,15 @@ int main() { typedef boost::reverse_iterator > Iter; boost::function_requires< boost::BidirectionalIteratorConcept >(); - boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::ReadableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::BidirectionalTraversalConcept >(); } { typedef boost::reverse_iterator > Iter; boost::function_requires< boost::Mutable_BidirectionalIteratorConcept >(); - boost::function_requires< boost_concepts::WritableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::WritableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::BidirectionalTraversalConcept >(); } // Adapting new-style iterators @@ -87,7 +89,8 @@ int main() > iter; typedef boost::reverse_iterator Iter; boost::function_requires< boost::BidirectionalIteratorConcept >(); - boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::ReadableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::BidirectionalTraversalConcept >(); } { @@ -98,7 +101,8 @@ int main() > iter; typedef boost::reverse_iterator Iter; boost::function_requires< boost::BidirectionalIteratorConcept >(); - boost::function_requires< boost_concepts::WritableLvalueIteratorConcept >(); + boost::function_requires< boost_concepts::WritableIteratorConcept >(); + boost::function_requires< boost_concepts::LvalueIteratorConcept >(); boost::function_requires< boost_concepts::BidirectionalTraversalConcept >(); } #endif