aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2015-01-16 20:13:55 +0100
committerAdrian Kummerlaender2015-01-16 20:13:55 +0100
commitf751632317a8cfb8474645e5964008bc7b6b6d90 (patch)
tree9b114e425a2f753ad8ac4645528a38bc64c08b9c
parent5a9e048c1efc3d0697debf968b4aeb056c04c391 (diff)
downloadTypeAsValue-f751632317a8cfb8474645e5964008bc7b6b6d90.tar
TypeAsValue-f751632317a8cfb8474645e5964008bc7b6b6d90.tar.gz
TypeAsValue-f751632317a8cfb8474645e5964008bc7b6b6d90.tar.bz2
TypeAsValue-f751632317a8cfb8474645e5964008bc7b6b6d90.tar.lz
TypeAsValue-f751632317a8cfb8474645e5964008bc7b6b6d90.tar.xz
TypeAsValue-f751632317a8cfb8474645e5964008bc7b6b6d90.tar.zst
TypeAsValue-f751632317a8cfb8474645e5964008bc7b6b6d90.zip
Implemented `tav::If` as `std::conditional` wrapper
-rw-r--r--src/conditional/if.h21
-rw-r--r--test.cc6
2 files changed, 27 insertions, 0 deletions
diff --git a/src/conditional/if.h b/src/conditional/if.h
new file mode 100644
index 0000000..29aa6f0
--- /dev/null
+++ b/src/conditional/if.h
@@ -0,0 +1,21 @@
+#ifndef TYPEASVALUE_SRC_CONDITIONAL_IF_H_
+#define TYPEASVALUE_SRC_CONDITIONAL_IF_H_
+
+#include <type_traits>
+
+namespace tav {
+
+template <
+ bool Condition,
+ typename IfBranch,
+ typename ElseBranch
+>
+using If = typename std::conditional<
+ Condition,
+ IfBranch,
+ ElseBranch
+>::type;
+
+}
+
+#endif // TYPEASVALUE_SRC_CONDITIONAL_IF_H_
diff --git a/test.cc b/test.cc
index 219bfe5..4e97b7a 100644
--- a/test.cc
+++ b/test.cc
@@ -2,6 +2,7 @@
#include "type.h"
#include "operation/math.h"
+#include "conditional/if.h"
class TypeAsValueTest : public ::testing::Test { };
@@ -16,6 +17,11 @@ TEST_F(TypeAsValueTest, BasicMath) {
EXPECT_EQ(5, ( tav::divide<tav::Int<10>, tav::Int<2>>::value ));
}
+TEST_F(TypeAsValueTest, Conditional) {
+ EXPECT_EQ(1, ( tav::If<true, tav::Int<1>, tav::Int<2>>::value ));
+ EXPECT_EQ(2, ( tav::If<false, tav::Int<1>, tav::Int<2>>::value ));
+}
+
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);