check for input range before checking for put() - avoid potential false positives

master
Daniel Kolesa 2015-05-23 22:27:57 +01:00
parent 329aefdecd
commit fe6325d5e3
1 changed files with 6 additions and 5 deletions

View File

@ -87,11 +87,12 @@ namespace octa {
static constexpr bool value = (sizeof(__octa_test<T>(0)) == sizeof(char));
};
template<typename T, bool
= (IsConvertible<RangeCategory<T>, OutputRangeTag>::value ||
__OctaOutputRangeTest<T, const RangeValue<T> &>::value ||
__OctaOutputRangeTest<T, RangeValue<T> &&>::value)
> struct IsOutputRange: False {};
template<typename T, bool = (IsConvertible<
RangeCategory<T>, OutputRangeTag
>::value || (IsInputRange<T>::value &&
(__OctaOutputRangeTest<T, const RangeValue<T> &>::value ||
__OctaOutputRangeTest<T, RangeValue<T> &&>::value)
))> struct IsOutputRange: False {};
template<typename T>
struct IsOutputRange<T, true>: True {};