aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/list/operation/higher/drop_while.h2
-rw-r--r--src/list/operation/higher/list_index.h2
-rw-r--r--src/list/operation/higher/take_while.h2
-rw-r--r--src/type.h6
4 files changed, 9 insertions, 3 deletions
diff --git a/src/list/operation/higher/drop_while.h b/src/list/operation/higher/drop_while.h
index 1207020..8d013f9 100644
--- a/src/list/operation/higher/drop_while.h
+++ b/src/list/operation/higher/drop_while.h
@@ -13,7 +13,7 @@ template <
>
using DropWhile = Drop<
typename utility::predicate_assurance<
- utility::predicate_negator<std::is_void>::template function,
+ IsSize,
Length<List>
>::template assure<
ListIndex<
diff --git a/src/list/operation/higher/list_index.h b/src/list/operation/higher/list_index.h
index bbf43ee..d665b82 100644
--- a/src/list/operation/higher/list_index.h
+++ b/src/list/operation/higher/list_index.h
@@ -29,7 +29,7 @@ template <
typename Index
>
struct index_of_first<Predicate, void, Index> {
- typedef void type;
+ typedef Boolean<false> type;
};
}
diff --git a/src/list/operation/higher/take_while.h b/src/list/operation/higher/take_while.h
index f9fc3aa..105e83c 100644
--- a/src/list/operation/higher/take_while.h
+++ b/src/list/operation/higher/take_while.h
@@ -13,7 +13,7 @@ template <
>
using TakeWhile = Take<
typename utility::predicate_assurance<
- utility::predicate_negator<std::is_void>::template function,
+ IsSize,
Length<List>
>::template assure<
ListIndex<
diff --git a/src/type.h b/src/type.h
index 508e22f..c2ad2d8 100644
--- a/src/type.h
+++ b/src/type.h
@@ -38,6 +38,12 @@ using IsEqualValue = Boolean<X::value == Y::value>;
template <typename X>
using IsTrue = IsEqualValue<X, Boolean<true>>;
+template <typename X>
+using IsBoolean = Eval<std::is_same<typename X::value_type, bool>>;
+
+template <typename X>
+using IsSize = Eval<std::is_same<typename X::value_type, std::size_t>>;
+
}
#endif // TYPEASVALUE_SRC_TYPE_H_