forked from boostorg/iterator
removed ReadableLvalue and WritableLvalue, added Lvalue
[SVN r22005]
This commit is contained in:
@ -98,38 +98,17 @@ namespace boost_concepts {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename Iterator>
|
template <typename Iterator>
|
||||||
class ReadableLvalueIteratorConcept
|
class LvalueIteratorConcept
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef typename boost::detail::iterator_traits<Iterator>::value_type value_type;
|
typedef typename boost::detail::iterator_traits<Iterator>::value_type value_type;
|
||||||
|
|
||||||
void constraints()
|
void constraints()
|
||||||
{
|
{
|
||||||
boost::function_requires< ReadableIteratorConcept<Iterator> >();
|
const value_type& r = *i;
|
||||||
const value_type& v = *i;
|
|
||||||
boost::ignore_unused_variable_warning(v);
|
|
||||||
}
|
}
|
||||||
Iterator i;
|
Iterator i;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename Iterator>
|
|
||||||
class WritableLvalueIteratorConcept {
|
|
||||||
public:
|
|
||||||
typedef typename boost::detail::iterator_traits<Iterator>::value_type value_type;
|
|
||||||
typedef typename boost::detail::iterator_traits<Iterator>::reference reference;
|
|
||||||
|
|
||||||
void constraints() {
|
|
||||||
boost::function_requires<
|
|
||||||
ReadableLvalueIteratorConcept<Iterator> >();
|
|
||||||
boost::function_requires<
|
|
||||||
WritableIteratorConcept<Iterator, value_type> >();
|
|
||||||
boost::function_requires<
|
|
||||||
SwappableIteratorConcept<Iterator> >();
|
|
||||||
|
|
||||||
|
|
||||||
BOOST_STATIC_ASSERT((boost::is_same<reference, value_type&>::value));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
// Iterator Traversal Concepts
|
// Iterator Traversal Concepts
|
||||||
|
@ -61,22 +61,30 @@ main()
|
|||||||
(void)derived;
|
(void)derived;
|
||||||
|
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::WritableLvalueIteratorConcept<int*> >();
|
boost_concepts::WritableIteratorConcept<int*> >();
|
||||||
|
boost::function_requires<
|
||||||
|
boost_concepts::LvalueIteratorConcept<int*> >();
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::RandomAccessTraversalConcept<int*> >();
|
boost_concepts::RandomAccessTraversalConcept<int*> >();
|
||||||
|
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::ReadableLvalueIteratorConcept<const int*> >();
|
boost_concepts::ReadableIteratorConcept<const int*> >();
|
||||||
|
boost::function_requires<
|
||||||
|
boost_concepts::LvalueIteratorConcept<const int*> >();
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::RandomAccessTraversalConcept<const int*> >();
|
boost_concepts::RandomAccessTraversalConcept<const int*> >();
|
||||||
|
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::WritableLvalueIteratorConcept<new_iterator> >();
|
boost_concepts::WritableIteratorConcept<new_iterator> >();
|
||||||
|
boost::function_requires<
|
||||||
|
boost_concepts::LvalueIteratorConcept<new_iterator> >();
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::RandomAccessTraversalConcept<new_iterator> >();
|
boost_concepts::RandomAccessTraversalConcept<new_iterator> >();
|
||||||
|
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::WritableLvalueIteratorConcept<old_iterator> >();
|
boost_concepts::WritableIteratorConcept<old_iterator> >();
|
||||||
|
boost::function_requires<
|
||||||
|
boost_concepts::LvalueIteratorConcept<old_iterator> >();
|
||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost_concepts::RandomAccessTraversalConcept<old_iterator> >();
|
boost_concepts::RandomAccessTraversalConcept<old_iterator> >();
|
||||||
|
|
||||||
|
@ -125,7 +125,8 @@ int main()
|
|||||||
> BaseIter;
|
> BaseIter;
|
||||||
typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
|
typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
|
||||||
boost::function_requires< boost::ForwardIteratorConcept<Iter> >();
|
boost::function_requires< boost::ForwardIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept<Iter> >();
|
boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >();
|
boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >();
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -136,7 +137,8 @@ int main()
|
|||||||
> BaseIter;
|
> BaseIter;
|
||||||
typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
|
typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
|
||||||
boost::function_requires< boost::Mutable_ForwardIteratorConcept<Iter> >();
|
boost::function_requires< boost::Mutable_ForwardIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<Iter> >();
|
boost::function_requires< boost_concepts::WritableIteratorConcept<Iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >();
|
boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -10,7 +10,8 @@ int main()
|
|||||||
typedef boost::reverse_iterator<int*> rev_iter;
|
typedef boost::reverse_iterator<int*> rev_iter;
|
||||||
typedef boost::reverse_iterator<int const*> c_rev_iter;
|
typedef boost::reverse_iterator<int const*> c_rev_iter;
|
||||||
|
|
||||||
boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<rev_iter> >();
|
boost::function_requires< boost_concepts::WritableIteratorConcept<rev_iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<rev_iter> >();
|
||||||
boost::function_requires< boost_concepts::RandomAccessTraversalConcept<rev_iter> >();
|
boost::function_requires< boost_concepts::RandomAccessTraversalConcept<rev_iter> >();
|
||||||
boost::function_requires< boost::RandomAccessIteratorConcept<rev_iter> >();
|
boost::function_requires< boost::RandomAccessIteratorConcept<rev_iter> >();
|
||||||
boost::function_requires< boost_concepts::InteroperableIteratorConcept<rev_iter, c_rev_iter> >();
|
boost::function_requires< boost_concepts::InteroperableIteratorConcept<rev_iter, c_rev_iter> >();
|
||||||
@ -28,7 +29,8 @@ int main()
|
|||||||
typedef boost::reverse_iterator<std::list<int>::iterator> rev_iter;
|
typedef boost::reverse_iterator<std::list<int>::iterator> rev_iter;
|
||||||
typedef boost::reverse_iterator<std::list<int>::const_iterator> c_rev_iter;
|
typedef boost::reverse_iterator<std::list<int>::const_iterator> c_rev_iter;
|
||||||
|
|
||||||
boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept<c_rev_iter> >();
|
boost::function_requires< boost_concepts::ReadableIteratorConcept<c_rev_iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<c_rev_iter> >();
|
||||||
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<c_rev_iter> >();
|
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<c_rev_iter> >();
|
||||||
boost::function_requires< boost::BidirectionalIteratorConcept<c_rev_iter> >();
|
boost::function_requires< boost::BidirectionalIteratorConcept<c_rev_iter> >();
|
||||||
boost::function_requires< boost_concepts::InteroperableIteratorConcept<rev_iter, c_rev_iter> >();
|
boost::function_requires< boost_concepts::InteroperableIteratorConcept<rev_iter, c_rev_iter> >();
|
||||||
|
@ -41,7 +41,8 @@ int main()
|
|||||||
, boost::random_access_traversal_tag
|
, boost::random_access_traversal_tag
|
||||||
> iter;
|
> iter;
|
||||||
|
|
||||||
boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept<iter> >();
|
boost::function_requires< boost_concepts::ReadableIteratorConcept<iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<iter> >();
|
||||||
boost::function_requires< boost_concepts::RandomAccessTraversalConcept<iter> >();
|
boost::function_requires< boost_concepts::RandomAccessTraversalConcept<iter> >();
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -51,7 +52,8 @@ int main()
|
|||||||
, boost::random_access_traversal_tag
|
, boost::random_access_traversal_tag
|
||||||
> iter;
|
> iter;
|
||||||
|
|
||||||
boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<iter> >();
|
boost::function_requires< boost_concepts::WritableIteratorConcept<iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<iter> >();
|
||||||
boost::function_requires< boost_concepts::RandomAccessTraversalConcept<iter> >();
|
boost::function_requires< boost_concepts::RandomAccessTraversalConcept<iter> >();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,13 +31,15 @@ int main()
|
|||||||
{
|
{
|
||||||
typedef boost::reverse_iterator<boost::bidirectional_iterator_archetype<dummyT> > Iter;
|
typedef boost::reverse_iterator<boost::bidirectional_iterator_archetype<dummyT> > Iter;
|
||||||
boost::function_requires< boost::BidirectionalIteratorConcept<Iter> >();
|
boost::function_requires< boost::BidirectionalIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept<Iter> >();
|
boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
typedef boost::reverse_iterator<boost::mutable_bidirectional_iterator_archetype<dummyT> > Iter;
|
typedef boost::reverse_iterator<boost::mutable_bidirectional_iterator_archetype<dummyT> > Iter;
|
||||||
boost::function_requires< boost::Mutable_BidirectionalIteratorConcept<Iter> >();
|
boost::function_requires< boost::Mutable_BidirectionalIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<Iter> >();
|
boost::function_requires< boost_concepts::WritableIteratorConcept<Iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
||||||
}
|
}
|
||||||
// Adapting new-style iterators
|
// Adapting new-style iterators
|
||||||
@ -87,7 +89,8 @@ int main()
|
|||||||
> iter;
|
> iter;
|
||||||
typedef boost::reverse_iterator<iter> Iter;
|
typedef boost::reverse_iterator<iter> Iter;
|
||||||
boost::function_requires< boost::BidirectionalIteratorConcept<Iter> >();
|
boost::function_requires< boost::BidirectionalIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::ReadableLvalueIteratorConcept<Iter> >();
|
boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -98,7 +101,8 @@ int main()
|
|||||||
> iter;
|
> iter;
|
||||||
typedef boost::reverse_iterator<iter> Iter;
|
typedef boost::reverse_iterator<iter> Iter;
|
||||||
boost::function_requires< boost::BidirectionalIteratorConcept<Iter> >();
|
boost::function_requires< boost::BidirectionalIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<Iter> >();
|
boost::function_requires< boost_concepts::WritableIteratorConcept<Iter> >();
|
||||||
|
boost::function_requires< boost_concepts::LvalueIteratorConcept<Iter> >();
|
||||||
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user