diff --git a/include/crap/algorithm.d/issorteduntilvalue.h b/include/crap/algorithm.d/issorteduntilvalue.h index 01ce0e5..2ff36c4 100644 --- a/include/crap/algorithm.d/issorteduntilvalue.h +++ b/include/crap/algorithm.d/issorteduntilvalue.h @@ -2,6 +2,7 @@ #define CRAP_ALGORITHM_ISSORTEDUNTILVALUE #include "../utility.d/valuelist.h" +#include "../version.d/libintegralconstantcallable.h" namespace crap { @@ -13,6 +14,9 @@ namespace crap constexpr const static std :: size_t npos = 0u; using value_type = decltype(value); constexpr operator value_type () const noexcept; +#if (crap_lib_integral_constant_callable >= 201304L) + constexpr value_type operator () () const noexcept; +#endif }; template class Operator, Type Value1> struct isSortedUntilValue @@ -21,6 +25,9 @@ namespace crap constexpr const static std :: size_t npos = 1u; using value_type = decltype(value); constexpr operator value_type () const noexcept; +#if (crap_lib_integral_constant_callable >= 201304L) + constexpr value_type operator () () const noexcept; +#endif }; template class Operator, Type Value1, Type Value2> struct isSortedUntilValue @@ -29,6 +36,9 @@ namespace crap constexpr const static std :: size_t npos = 2u; using value_type = decltype(value); constexpr operator value_type () const noexcept; +#if (crap_lib_integral_constant_callable >= 201304L) + constexpr value_type operator () () const noexcept; +#endif }; template class Operator, Type ... Values> struct isSortedUntilValue @@ -49,6 +59,9 @@ namespace crap constexpr const static std :: size_t npos = (values :: size); using value_type = decltype(value); constexpr operator value_type () const noexcept; +#if (crap_lib_integral_constant_callable >= 201304L) + constexpr value_type operator () () const noexcept; +#endif }; } @@ -58,6 +71,15 @@ template class Operator> { return crap :: isSortedUntilValue :: value; } +#if (crap_lib_integral_constant_callable >= 201304L) + +template class Operator> + inline constexpr typename crap :: isSortedUntilValue :: value_type + crap :: isSortedUntilValue :: operator () () const noexcept +{ + return crap :: isSortedUntilValue :: value; +} +#endif template class Operator, Type Value1> inline constexpr crap :: isSortedUntilValue :: operator @@ -65,6 +87,15 @@ template class Operator, Type Value1> { return crap :: isSortedUntilValue :: value; } +#if (crap_lib_integral_constant_callable >= 201304L) + +template class Operator, Type Value1> + inline constexpr typename crap :: isSortedUntilValue :: value_type + crap :: isSortedUntilValue :: operator () () const noexcept +{ + return crap :: isSortedUntilValue :: value; +} +#endif template class Operator, Type Value1, Type Value2> inline constexpr crap :: isSortedUntilValue :: operator @@ -72,6 +103,15 @@ template class Operator, Type Value1, Type Va { return crap :: isSortedUntilValue :: value; } +#if (crap_lib_integral_constant_callable >= 201304L) + +template class Operator, Type Value1, Type Value2> + inline constexpr typename crap :: isSortedUntilValue :: value_type + crap :: isSortedUntilValue :: operator () () const noexcept +{ + return crap :: isSortedUntilValue :: value; +} +#endif template class Operator, Type ... Values> inline constexpr crap :: isSortedUntilValue :: operator @@ -79,5 +119,14 @@ template class Operator, Type ... Values> { return crap :: isSortedUntilValue :: value; } +#if (crap_lib_integral_constant_callable >= 201304L) + +template class Operator, Type ... Values> + inline constexpr typename crap :: isSortedUntilValue :: value_type + crap :: isSortedUntilValue :: operator () () const noexcept +{ + return crap :: isSortedUntilValue :: value; +} +#endif #endif