From 4adbeb4e1bda114fc81716ad840598b095900ecf Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 23 May 2015 17:40:36 +0100 Subject: [PATCH] add range difference type --- octa/range.h | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/octa/range.h b/octa/range.h index 2f13bfe..0933b48 100644 --- a/octa/range.h +++ b/octa/range.h @@ -19,10 +19,11 @@ namespace octa { struct BidirectionalRangeTag {}; struct RandomAccessRangeTag {}; - template using RangeCategory = typename T::Category; - template using RangeSize = typename T::SizeType; - template using RangeValue = typename T::ValType; - template using RangeReference = typename T::RefType; + template using RangeCategory = typename T::Category; + template using RangeSize = typename T::SizeType; + template using RangeDifference = typename T::DiffType; + template using RangeValue = typename T::ValType; + template using RangeReference = typename T::RefType; template struct __OctaRangeIterator { @@ -62,10 +63,11 @@ namespace octa { } template struct InputRange { typedef C Category; typedef S SizeType; + typedef D DiffType; typedef V ValType; typedef R RefType; @@ -85,17 +87,20 @@ namespace octa { } }; - template - struct OutputRange { + template struct OutputRange { typedef OutputRangeTag Category; typedef S SizeType; + typedef D DiffType; typedef V ValType; typedef R RefType; }; template struct ReverseRange: InputRange, - RangeCategory, RangeValue, RangeReference, RangeSize + RangeCategory, RangeValue, RangeReference, RangeSize, + RangeDifference > { private: typedef RangeReference r_ref; @@ -192,7 +197,8 @@ namespace octa { template struct MoveRange: InputRange, - RangeCategory, RangeValue, RangeValue &&, RangeSize + RangeCategory, RangeValue, RangeValue &&, RangeSize, + RangeDifference > { private: typedef RangeValue r_val; @@ -412,7 +418,7 @@ namespace octa { struct EnumeratedRange: InputRange, InputRangeTag, RangeValue, EnumeratedValue, RangeSize>, - RangeSize + RangeSize, RangeDifference > { private: typedef RangeReference r_ref;