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)); static constexpr bool value = (sizeof(__octa_test<T>(0)) == sizeof(char));
}; };
template<typename T, bool template<typename T, bool = (IsConvertible<
= (IsConvertible<RangeCategory<T>, OutputRangeTag>::value || RangeCategory<T>, OutputRangeTag
__OctaOutputRangeTest<T, const RangeValue<T> &>::value || >::value || (IsInputRange<T>::value &&
__OctaOutputRangeTest<T, RangeValue<T> &&>::value) (__OctaOutputRangeTest<T, const RangeValue<T> &>::value ||
> struct IsOutputRange: False {}; __OctaOutputRangeTest<T, RangeValue<T> &&>::value)
))> struct IsOutputRange: False {};
template<typename T> template<typename T>
struct IsOutputRange<T, true>: True {}; struct IsOutputRange<T, true>: True {};