remove range traits pointer specializations, as a pointer is not a range... also remove the pointer member type

master
Daniel Kolesa 2015-04-17 20:29:38 +01:00
parent 0116d3cf4c
commit 1557c227d0
1 changed files with 1 additions and 37 deletions

View File

@ -21,42 +21,9 @@ namespace octa {
struct RangeTraits {
typedef typename T::type::category category;
typedef typename T::type::value value;
typedef typename T::type::pointer pointer;
typedef typename T::type::reference reference;
};
template<typename T>
struct RangeTraits<T *> {
typedef RandomAccessRange category;
typedef T value;
typedef T *pointer;
typedef T &reference;
};
template<typename T>
struct RangeTraits<const T *> {
typedef RandomAccessRange category;
typedef T value;
typedef const T *pointer;
typedef const T &reference;
};
template<>
struct RangeTraits<void *> {
typedef RandomAccessRange category;
typedef uchar value;
typedef void *pointer;
typedef uchar &reference;
};
template<>
struct RangeTraits<const void *> {
typedef RandomAccessRange category;
typedef uchar value;
typedef const void *pointer;
typedef const uchar &reference;
};
namespace internal {
template<typename T>
struct RangeIterator {
@ -78,12 +45,11 @@ namespace octa {
};
}
template<typename B, typename C, typename V, typename P = V *, typename R = V &>
template<typename B, typename C, typename V, typename R = V &>
struct Range {
struct type {
typedef C category;
typedef V value;
typedef P pointer;
typedef R reference;
};
@ -99,7 +65,6 @@ namespace octa {
struct ReverseRange: Range<ReverseRange<T>,
typename RangeTraits<T>::category,
typename RangeTraits<T>::value,
typename RangeTraits<T>::pointer,
typename RangeTraits<T>::reference
> {
ReverseRange(): p_range() {}
@ -146,7 +111,6 @@ namespace octa {
struct MoveRange: Range<MoveRange<T>,
typename RangeTraits<T>::category,
typename RangeTraits<T>::value,
typename RangeTraits<T>::pointer,
typename RangeTraits<T>::value &&
> {
MoveRange(): p_range() {}