aboutsummaryrefslogtreecommitdiff
path: root/src/function
diff options
context:
space:
mode:
authorAdrian Kummerlaender2015-02-14 10:43:49 +0100
committerAdrian Kummerlaender2015-02-14 10:43:49 +0100
commite24f25ada7e8f48dc35cb235e045a4324bccb4f2 (patch)
tree3b6c409c7d336557163dcb25e4b11fdef82a3a79 /src/function
parent73680466149c7aad21de558b7acc11dfa05183d2 (diff)
downloadTypeAsValue-e24f25ada7e8f48dc35cb235e045a4324bccb4f2.tar
TypeAsValue-e24f25ada7e8f48dc35cb235e045a4324bccb4f2.tar.gz
TypeAsValue-e24f25ada7e8f48dc35cb235e045a4324bccb4f2.tar.bz2
TypeAsValue-e24f25ada7e8f48dc35cb235e045a4324bccb4f2.tar.lz
TypeAsValue-e24f25ada7e8f48dc35cb235e045a4324bccb4f2.tar.xz
TypeAsValue-e24f25ada7e8f48dc35cb235e045a4324bccb4f2.tar.zst
TypeAsValue-e24f25ada7e8f48dc35cb235e045a4324bccb4f2.zip
Introduced `Eval` function evaluation helper
* replaces `typename *::type` constructs with `Eval` applications * aims to further unify function evaluation
Diffstat (limited to 'src/function')
-rw-r--r--src/function/apply.h6
-rw-r--r--src/function/detail/apply.h10
2 files changed, 8 insertions, 8 deletions
diff --git a/src/function/apply.h b/src/function/apply.h
index 5a2105c..f4de292 100644
--- a/src/function/apply.h
+++ b/src/function/apply.h
@@ -19,15 +19,15 @@ template <
>
struct Apply : Cond<
Pair<
- GreaterThan<typename detail::count_placeholders<Arguments...>::type, Size<2>>,
+ GreaterThan<Eval<detail::count_placeholders<Arguments...>>, Size<2>>,
detail::apply_variadic<Function, Arguments...>
>,
Pair<
- IsEqualValue<typename detail::count_placeholders<Arguments...>::type, Size<2>>,
+ IsEqualValue<Eval<detail::count_placeholders<Arguments...>>, Size<2>>,
detail::apply_pair<Function, Arguments...>
>,
Pair<
- IsEqualValue<typename detail::count_placeholders<Arguments...>::type, Size<1>>,
+ IsEqualValue<Eval<detail::count_placeholders<Arguments...>>, Size<1>>,
detail::apply_single<Function, Arguments...>
>,
Pair<
diff --git a/src/function/detail/apply.h b/src/function/detail/apply.h
index b4b70bf..da347f7 100644
--- a/src/function/detail/apply.h
+++ b/src/function/detail/apply.h
@@ -33,13 +33,13 @@ template <
int Index
>
struct resolve_placeholder<Partials, placeholder<Index>> {
- typedef typename Nth<Size<Index>, Partials>::type type;
+ typedef Eval<Nth<Size<Index>, Partials>> type;
};
template <typename... Arguments>
using count_placeholders = Count<
is_placeholder,
- typename List<Arguments...>::type
+ Eval<List<Arguments...>>
>;
template <
@@ -57,10 +57,10 @@ template <
struct apply_variadic {
template <typename... Partials>
using function = Function<
- typename resolve_placeholder<
- typename tav::List<Partials...>::type,
+ Eval<resolve_placeholder<
+ Eval<List<Partials...>>,
Arguments
- >::type...
+ >>...
>;
};