From 7ce93ff513a993b8b46fbb401b232d6f557b948b Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Mon, 26 Jan 2015 18:54:59 +0100
Subject: Added pair and triple aliae for the variadic `Apply` type

---
 src/function/apply.h | 12 +++++++++---
 test.cc              | 14 ++++++++++++--
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/function/apply.h b/src/function/apply.h
index d353169..6012a01 100644
--- a/src/function/apply.h
+++ b/src/function/apply.h
@@ -48,15 +48,21 @@ struct Apply {
 	typedef typename tav::List<Arguments...>::type argument_list;
 
 	template <typename... Partials>
-	using type = Function<
+	using variadic_type = Function<
 		typename detail::resolve_placeholder<
 			typename tav::List<Partials...>::type,
 			Arguments
 		>::type...
 	>;
 
-	template <typename Partials>
-	using single_type = type<Partials>;
+	template <typename Partial>
+	using single_type = variadic_type<Partial>;
+
+	template <typename Partial0, typename Partial1>
+	using pair_type = variadic_type<Partial0, Partial1>;
+
+	template <typename Partial0, typename Partial1, typename Partial2>
+	using triple_type = variadic_type<Partial0, Partial1, Partial2>;
 };
 
 }
diff --git a/test.cc b/test.cc
index 6f95ca9..0c16126 100644
--- a/test.cc
+++ b/test.cc
@@ -639,7 +639,13 @@ static_assert(
 static_assert(
 	std::is_same<
 		tav::Int<42>,
-		tav::Apply<tav::Multiply, tav::Int<21>, tav::_0>::type<tav::Int<2>>::type
+		tav::Apply<
+			tav::Multiply,
+			tav::Int<21>,
+			tav::_0
+		>::single_type<
+			tav::Int<2>
+		>::type
 	>::value,
 	"((lambda (x) (* 21 x)) 2) != 42"
 );
@@ -648,7 +654,11 @@ static_assert(
 	std::is_same<
 		tav::List<tav::Int<10>, tav::Int<12>, tav::Int<14>>::type,
 		tav::Map<
-			tav::Apply<tav::Add, tav::_0, tav::Int<10>>::single_type,
+			tav::Apply<
+				tav::Add,
+				tav::_0,
+				tav::Int<10>
+			>::single_type,
 			tav::List<tav::Int<0>, tav::Int<2>, tav::Int<4>>::type
 		>::type
 	>::value,
-- 
cgit v1.2.3