Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "main.h"
00026
00027 void test_eigen2_meta()
00028 {
00029 typedef float & FloatRef;
00030 typedef const float & ConstFloatRef;
00031
00032 VERIFY((ei_meta_if<(3<4),ei_meta_true, ei_meta_false>::ret::ret));
00033 VERIFY(( ei_is_same_type<float,float>::ret));
00034 VERIFY((!ei_is_same_type<float,double>::ret));
00035 VERIFY((!ei_is_same_type<float,float&>::ret));
00036 VERIFY((!ei_is_same_type<float,const float&>::ret));
00037
00038 VERIFY(( ei_is_same_type<float,ei_cleantype<const float&>::type >::ret));
00039 VERIFY(( ei_is_same_type<float,ei_cleantype<const float*>::type >::ret));
00040 VERIFY(( ei_is_same_type<float,ei_cleantype<const float*&>::type >::ret));
00041 VERIFY(( ei_is_same_type<float,ei_cleantype<float**>::type >::ret));
00042 VERIFY(( ei_is_same_type<float,ei_cleantype<float**&>::type >::ret));
00043 VERIFY(( ei_is_same_type<float,ei_cleantype<float* const *&>::type >::ret));
00044 VERIFY(( ei_is_same_type<float,ei_cleantype<float* const>::type >::ret));
00045
00046 VERIFY(( ei_is_same_type<float*,ei_unconst<const float*>::type >::ret));
00047 VERIFY(( ei_is_same_type<float&,ei_unconst<const float&>::type >::ret));
00048 VERIFY(( ei_is_same_type<float&,ei_unconst<ConstFloatRef>::type >::ret));
00049
00050 VERIFY(( ei_is_same_type<float&,ei_unconst<float&>::type >::ret));
00051 VERIFY(( ei_is_same_type<float,ei_unref<float&>::type >::ret));
00052 VERIFY(( ei_is_same_type<const float,ei_unref<const float&>::type >::ret));
00053 VERIFY(( ei_is_same_type<float,ei_unpointer<float*>::type >::ret));
00054 VERIFY(( ei_is_same_type<const float,ei_unpointer<const float*>::type >::ret));
00055 VERIFY(( ei_is_same_type<float,ei_unpointer<float* const >::type >::ret));
00056
00057 VERIFY(ei_meta_sqrt<1>::ret == 1);
00058 #define VERIFY_META_SQRT(X) VERIFY(ei_meta_sqrt<X>::ret == int(ei_sqrt(double(X))))
00059 VERIFY_META_SQRT(2);
00060 VERIFY_META_SQRT(3);
00061 VERIFY_META_SQRT(4);
00062 VERIFY_META_SQRT(5);
00063 VERIFY_META_SQRT(6);
00064 VERIFY_META_SQRT(8);
00065 VERIFY_META_SQRT(9);
00066 VERIFY_META_SQRT(15);
00067 VERIFY_META_SQRT(16);
00068 VERIFY_META_SQRT(17);
00069 VERIFY_META_SQRT(255);
00070 VERIFY_META_SQRT(256);
00071 VERIFY_META_SQRT(257);
00072 VERIFY_META_SQRT(1023);
00073 VERIFY_META_SQRT(1024);
00074 VERIFY_META_SQRT(1025);
00075 }