commit d03383a46cdfb1eac9b1a7c27c1b697603546392
parent a94f01f6c74dc7eaa5875fac4eab0e0e5718f19e
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Fri, 31 Mar 2017 22:51:49 +0300
CoMeta: is_sequence function
Diffstat:
1 file changed, 21 insertions(+), 0 deletions(-)
diff --git a/include/kfr/cometa.hpp b/include/kfr/cometa.hpp
@@ -1630,6 +1630,27 @@ CMT_INLINE constexpr static T implicit_cast(U&& value)
return std::forward<T>(value);
}
+namespace details
+{
+template <size_t start, size_t count>
+constexpr std::true_type test_sequence(csizeseq_t<count, start>)
+{
+ return {};
+}
+
+template <size_t, size_t>
+constexpr std::false_type test_sequence(...)
+{
+ return {};
+}
+}
+
+template <size_t number, size_t... numbers>
+constexpr bool is_sequence(csizes_t<number, numbers...>)
+{
+ return details::test_sequence<number, 1 + sizeof...(numbers)>(csizes_t<number, numbers...>()).value;
+}
+
#ifdef CMT_COMPILER_GNU
template <typename T, T val>