From 1e0528b1a870e0e0f2b15f468fc60f80e5fc20b3 Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Thu, 5 Feb 2015 17:13:39 +0100
Subject: Defer `If` template resolution analogously to other functions * all
other functions sans `Cons` are resolved when the respective member `*::type`
is instantiated * this was changed soely to increase coherence
---
src/conditional/if.h | 4 ++--
src/list/operation/higher/drop_while.h | 4 ++--
src/list/operation/higher/filter.h | 12 +++++-------
src/list/operation/higher/find.h | 4 ++--
src/list/operation/higher/take_while.h | 4 ++--
5 files changed, 13 insertions(+), 15 deletions(-)
(limited to 'src')
diff --git a/src/conditional/if.h b/src/conditional/if.h
index b9568f6..b019674 100644
--- a/src/conditional/if.h
+++ b/src/conditional/if.h
@@ -10,11 +10,11 @@ template <
typename TrueBranch,
typename FalseBranch
>
-using If = typename std::conditional<
+using If = std::conditional<
Condition,
TrueBranch,
FalseBranch
->::type;
+>;
}
diff --git a/src/list/operation/higher/drop_while.h b/src/list/operation/higher/drop_while.h
index a6ab8c4..ad1553f 100644
--- a/src/list/operation/higher/drop_while.h
+++ b/src/list/operation/higher/drop_while.h
@@ -10,11 +10,11 @@ template <
typename Current
>
struct DropWhile {
- typedef If<
+ typedef typename If<
Predicate
>::type::value,
typename DropWhile>::type,
Current
- > type;
+ >::type type;
};
template <
diff --git a/src/list/operation/higher/filter.h b/src/list/operation/higher/filter.h
index d91735e..3fc08ee 100644
--- a/src/list/operation/higher/filter.h
+++ b/src/list/operation/higher/filter.h
@@ -16,13 +16,11 @@ class Filter {
typename Current,
typename Previous
>
- struct predicate_wrapper {
- typedef If<
- Predicate::type::value,
- Cons,
- Previous
- > type;
- };
+ using predicate_wrapper = If<
+ Predicate::type::value,
+ Cons,
+ Previous
+ >;
public:
typedef typename Fold::type type;
diff --git a/src/list/operation/higher/find.h b/src/list/operation/higher/find.h
index 47b88ad..bf9d04f 100644
--- a/src/list/operation/higher/find.h
+++ b/src/list/operation/higher/find.h
@@ -11,11 +11,11 @@ template <
typename Current
>
struct Find {
- typedef If<
+ typedef typename If<
Predicate>::type::value,
Head,
typename Find>::type
- > type;
+ >::type type;
};
template <
diff --git a/src/list/operation/higher/take_while.h b/src/list/operation/higher/take_while.h
index 1ee6736..27f58ed 100644
--- a/src/list/operation/higher/take_while.h
+++ b/src/list/operation/higher/take_while.h
@@ -10,14 +10,14 @@ template <
typename Current
>
struct TakeWhile {
- typedef If<
+ typedef typename If<
Predicate>::type::value,
Cons<
Head,
typename TakeWhile>::type
>,
void
- > type;
+ >::type type;
};
template <
--
cgit v1.2.3