From 5a9e048c1efc3d0697debf968b4aeb056c04c391 Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Fri, 16 Jan 2015 19:52:36 +0100
Subject: Redefined function template structs as template aliases

---
 src/operation/math.h | 40 ++++++++++++++++------------------------
 test.cc              |  8 ++++----
 2 files changed, 20 insertions(+), 28 deletions(-)

diff --git a/src/operation/math.h b/src/operation/math.h
index 64a5cdb..82740b6 100644
--- a/src/operation/math.h
+++ b/src/operation/math.h
@@ -9,45 +9,37 @@ template <
 	typename X,
 	typename Y
 >
-struct add {
-	typedef std::integral_constant<
-		decltype(X::value + Y::value),
-		X::value + Y::value
-	> type;
-};
+using add = typename std::integral_constant<
+	decltype(X::value + Y::value),
+	X::value + Y::value
+>::type;
 
 template <
 	typename X,
 	typename Y
 >
-struct substract {
-	typedef std::integral_constant<
-		decltype(X::value - Y::value),
-		X::value - Y::value
-	> type;
-};
+using substract = typename std::integral_constant<
+	decltype(X::value - Y::value),
+	X::value - Y::value
+>::type;
 
 template <
 	typename X,
 	typename Y
 >
-struct multiply {
-	typedef std::integral_constant<
-		decltype(X::value * Y::value),
-		X::value * Y::value
-	> type;
-};
+using multiply = typename std::integral_constant<
+	decltype(X::value * Y::value),
+	X::value * Y::value
+>::type;
 
 template <
 	typename X,
 	typename Y
 >
-struct divide {
-	typedef std::integral_constant<
-		decltype(X::value / Y::value),
-		X::value / Y::value
-	> type;
-};
+using divide = typename std::integral_constant<
+	decltype(X::value / Y::value),
+	X::value / Y::value
+>::type;
 
 }
 
diff --git a/test.cc b/test.cc
index 5a7a6eb..219bfe5 100644
--- a/test.cc
+++ b/test.cc
@@ -10,10 +10,10 @@ TEST_F(TypeAsValueTest, Value) {
 }
 
 TEST_F(TypeAsValueTest, BasicMath) {
-	EXPECT_EQ(3,  ( tav::add<tav::Int<1>, tav::Int<2>>::type::value ));
-	EXPECT_EQ(4,  ( tav::substract<tav::Int<10>, tav::Int<6>>::type::value ));
-	EXPECT_EQ(42, ( tav::multiply<tav::Int<2>, tav::Int<21>>::type::value ));
-	EXPECT_EQ(5, ( tav::divide<tav::Int<10>, tav::Int<2>>::type::value ));
+	EXPECT_EQ(3,  ( tav::add<tav::Int<1>, tav::Int<2>>::value ));
+	EXPECT_EQ(4,  ( tav::substract<tav::Int<10>, tav::Int<6>>::value ));
+	EXPECT_EQ(42, ( tav::multiply<tav::Int<2>, tav::Int<21>>::value ));
+	EXPECT_EQ(5,  ( tav::divide<tav::Int<10>, tav::Int<2>>::value ));
 }
 
 int main(int argc, char **argv) {
-- 
cgit v1.2.3