update of new concepts, and replacement of range_size<T>::type with range_difference<T>::type throughut the library

[SVN r40965]
This commit is contained in:
Thorsten Jørgen Ottosen
2007-11-09 13:30:57 +00:00
parent 1509d5603b
commit 2605b9ee45
4 changed files with 34 additions and 58 deletions

View File

@ -13,8 +13,8 @@
#include <boost/concept_check.hpp>
#include <boost/iterator/iterator_concepts.hpp>
#include <boost/range/functions.hpp>
#include <boost/range/metafunctions.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
/*!
* \file
@ -57,10 +57,10 @@ namespace boost {
//! Check if a type T models the SinglePassRange range concept.
template<typename T>
struct SinglePassRangeConcept {
typedef typename range_value<T>::type range_value;
typedef typename range_iterator<T>::type range_iterator;
//typedef typename range_iterator<const T>::type range_const_iterator;
struct SinglePassRangeConcept
{
typedef typename range_iterator<T const>::type range_const_iterator;
typedef typename range_iterator<T>::type range_iterator;
void constraints()
{
@ -71,23 +71,24 @@ namespace boost {
>();
i = boost::begin(a);
i = boost::end(a);
b = boost::empty(a);
const_constraints(a);
}
void const_constraints(const T& a)
{
//ci = boost::begin(a);
//ci = boost::end(a);
ci = boost::begin(a);
ci = boost::end(a);
}
T a;
range_iterator i;
range_const_iterator ci;
bool b;
};
//! Check if a type T models the ForwardRange range concept.
template<typename T>
struct ForwardRangeConcept {
typedef typename range_difference<T>::type range_difference;
struct ForwardRangeConcept
{
void constraints()
{
function_requires<
@ -103,8 +104,8 @@ namespace boost {
//! Check if a type T models the BidirectionalRange range concept.
template<typename T>
struct BidirectionalRangeConcept {
typedef typename range_reverse_iterator<T>::type range_reverse_iterator;
struct BidirectionalRangeConcept
{
void constraints()
{
function_requires<
@ -115,24 +116,13 @@ namespace boost {
typename range_iterator<T>::type
>
>();
i = boost::rbegin(a);
i = boost::rend(a);
const_constraints(a);
}
void const_constraints(const T& a)
{
//ci = boost::rbegin(a);
//ci = boost::rend(a);
}
T a;
range_reverse_iterator i;
};
//! Check if a type T models the RandomAccessRange range concept.
template<typename T>
struct RandomAccessRangeConcept {
typedef typename range_size<T>::type range_size;
struct RandomAccessRangeConcept
{
void constraints()
{
function_requires<
@ -143,12 +133,7 @@ namespace boost {
typename range_iterator<T>::type
>
>();
s = boost::size(a);
}
T a;
range_size s;
};
} // namespace boost