enable_if.cpp
Go to the documentation of this file.
00001 
00009 /*****************************************************************************
00010 ** Includes
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 ** Using
00022 *****************************************************************************/
00023 
00024 using ecl::enable_if;
00025 
00026 /*****************************************************************************
00027 ** Classes
00028 *****************************************************************************/
00029 
00030 namespace ecl {
00031 namespace mpl {
00032 namespace tests {
00033 
00034 /*****************************************************************************
00035 ** Is Float
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 } // namespace tests
00065 } // namespace mpl
00066 } // namespace ecl
00067 
00068 /*****************************************************************************
00069 ** Using
00070 *****************************************************************************/
00071 
00072 using namespace ecl::mpl::tests;
00073 
00074 /*****************************************************************************
00075 ** Tests
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 ** Main program
00090 *****************************************************************************/
00091 
00092 int main(int argc, char **argv) {
00093 
00094     testing::InitGoogleTest(&argc,argv);
00095     return RUN_ALL_TESTS();
00096 }


ecl_mpl
Author(s): Daniel Stonier
autogenerated on Sun Oct 5 2014 23:35:20