Added missing value_type to InputIteratorConcept

Improved idiomatic fake_sort


[SVN r33889]
This commit is contained in:
Dave Abrahams
2006-05-01 13:17:48 +00:00
parent bfb6428417
commit 8c32f7a5e2
4 changed files with 19 additions and 14 deletions

View File

@@ -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

View File

@@ -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:

View File

@@ -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;
} }

View File

@@ -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;
} }