Go to the documentation of this file.00001
00009
00010
00011
00012
00013 #include <gtest/gtest.h>
00014 #include "../../include/ecl/mpl/enable_if.hpp"
00015 #include "../../include/ecl/mpl/bool.hpp"
00016
00020
00021
00022
00023
00024 using ecl::enable_if;
00025
00026
00027
00028
00029
00030 namespace ecl {
00031 namespace mpl {
00032 namespace tests {
00033
00034
00035
00036
00037
00038 template <typename T>
00039 class is_float : public ecl::False {};
00040
00041 template <>
00042 class is_float<float> : public ecl::True {};
00043
00044 template <>
00045 class is_float<double> : public ecl::True {};
00046
00050 template <typename T, typename Enable = void>
00051 class TestDude {
00052 public:
00053 bool isSpecialisation() { return false; }
00054 };
00058 template <typename T>
00059 class TestDude< T, typename enable_if< is_float<T> >::type > {
00060 public:
00061 bool isSpecialisation() { return true; }
00062 };
00063
00064 }
00065 }
00066 }
00067
00068
00069
00070
00071
00072 using namespace ecl::mpl::tests;
00073
00074
00075
00076
00077
00078 TEST(EnableIfTests,oneshot) {
00079 TestDude<float> float_dude;
00080 TestDude<int> int_dude;
00081 bool result;
00082 result = float_dude.isSpecialisation();
00083 EXPECT_EQ(true, result);
00084 result = int_dude.isSpecialisation();
00085 EXPECT_EQ(false, result);
00086 }
00087
00088
00089
00090
00091
00092 int main(int argc, char **argv) {
00093
00094 testing::InitGoogleTest(&argc,argv);
00095 return RUN_ALL_TESTS();
00096 }