forked from boostorg/concept_check
Added missing value_type to InputIteratorConcept
Improved idiomatic fake_sort [SVN r33889]
This commit is contained in:
@@ -8,15 +8,20 @@
|
|||||||
# include <boost/concept_check/where.hpp>
|
# include <boost/concept_check/where.hpp>
|
||||||
# include <boost/concept_check.hpp>
|
# include <boost/concept_check.hpp>
|
||||||
|
|
||||||
|
namespace fake
|
||||||
|
{
|
||||||
|
using namespace boost;
|
||||||
|
|
||||||
template<typename RanIter>
|
template<typename RanIter>
|
||||||
BOOST_CONCEPT_WHERE(
|
BOOST_CONCEPT_WHERE(
|
||||||
((boost::Mutable_RandomAccessIteratorConcept<RanIter>))
|
((Mutable_RandomAccessIteratorConcept<RanIter>))
|
||||||
((boost::LessThanComparableConcept<typename boost::detail::iterator_traits<RanIter>::value_type>))
|
((LessThanComparableConcept<typename Mutable_RandomAccessIteratorConcept<RanIter>::value_type>))
|
||||||
|
|
||||||
, (void))
|
, (void))
|
||||||
fake_sort(RanIter,RanIter)
|
sort(RanIter,RanIter)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif // BOOST_LIBS_CONCEPT_CHECK_FAKE_SORT_DWA2006430_HPP
|
#endif // BOOST_LIBS_CONCEPT_CHECK_FAKE_SORT_DWA2006430_HPP
|
||||||
|
@@ -462,9 +462,8 @@ namespace boost
|
|||||||
: AssignableConcept<TT>
|
: AssignableConcept<TT>
|
||||||
, EqualityComparableConcept<TT>
|
, EqualityComparableConcept<TT>
|
||||||
{
|
{
|
||||||
// require iterator_traits typedef's
|
typedef typename boost::detail::iterator_traits<TT>::value_type value_type;
|
||||||
typedef typename boost::detail::iterator_traits<TT>::difference_type difference_type;
|
typedef typename boost::detail::iterator_traits<TT>::difference_type difference_type;
|
||||||
// Hmm, the following is a bit fragile
|
|
||||||
typedef typename boost::detail::iterator_traits<TT>::reference reference;
|
typedef typename boost::detail::iterator_traits<TT>::reference reference;
|
||||||
typedef typename boost::detail::iterator_traits<TT>::pointer pointer;
|
typedef typename boost::detail::iterator_traits<TT>::pointer pointer;
|
||||||
typedef typename boost::detail::iterator_traits<TT>::iterator_category iterator_category;
|
typedef typename boost::detail::iterator_traits<TT>::iterator_category iterator_category;
|
||||||
@@ -591,7 +590,8 @@ namespace boost
|
|||||||
: RandomAccessIteratorConcept<TT>
|
: RandomAccessIteratorConcept<TT>
|
||||||
, Mutable_BidirectionalIteratorConcept<TT>
|
, Mutable_BidirectionalIteratorConcept<TT>
|
||||||
{
|
{
|
||||||
~Mutable_RandomAccessIteratorConcept() {
|
~Mutable_RandomAccessIteratorConcept()
|
||||||
|
{
|
||||||
i[n] = *i; // require element access and assignment
|
i[n] = *i; // require element access and assignment
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
|
@@ -8,6 +8,6 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
std::vector<int> v;
|
std::vector<int> v;
|
||||||
fake_sort(v.begin(), v.end());
|
fake::sort(v.begin(), v.end());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,6 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
std::list<int> v;
|
std::list<int> v;
|
||||||
fake_sort(v.begin(), v.end());
|
fake::sort(v.begin(), v.end());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user