1 // This file is part of Eigen, a lightweight C++ template library
4 // Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
14 VERIFY((internal::conditional
<(3<4),internal::true_type
, internal::false_type
>::type::value
));
15 VERIFY(( internal::is_same
<float,float>::value
));
16 VERIFY((!internal::is_same
<float,double>::value
));
17 VERIFY((!internal::is_same
<float,float&>::value
));
18 VERIFY((!internal::is_same
<float,const float&>::value
));
20 VERIFY(( internal::is_same
<float,internal::remove_all
<const float&>::type
>::value
));
21 VERIFY(( internal::is_same
<float,internal::remove_all
<const float*>::type
>::value
));
22 VERIFY(( internal::is_same
<float,internal::remove_all
<const float*&>::type
>::value
));
23 VERIFY(( internal::is_same
<float,internal::remove_all
<float**>::type
>::value
));
24 VERIFY(( internal::is_same
<float,internal::remove_all
<float**&>::type
>::value
));
25 VERIFY(( internal::is_same
<float,internal::remove_all
<float* const *&>::type
>::value
));
26 VERIFY(( internal::is_same
<float,internal::remove_all
<float* const>::type
>::value
));
29 VERIFY(( internal::is_same
< internal::add_const
<float>::type
, const float >::value
));
30 VERIFY(( internal::is_same
< internal::add_const
<float*>::type
, float* const>::value
));
31 VERIFY(( internal::is_same
< internal::add_const
<float const*>::type
, float const* const>::value
));
32 VERIFY(( internal::is_same
< internal::add_const
<float&>::type
, float& >::value
));
35 VERIFY(( internal::is_same
< internal::remove_const
<float const* const>::type
, float const* >::value
));
36 VERIFY(( internal::is_same
< internal::remove_const
<float const*>::type
, float const* >::value
));
37 VERIFY(( internal::is_same
< internal::remove_const
<float* const>::type
, float* >::value
));
39 // test add_const_on_value_type
40 VERIFY(( internal::is_same
< internal::add_const_on_value_type
<float&>::type
, float const& >::value
));
41 VERIFY(( internal::is_same
< internal::add_const_on_value_type
<float*>::type
, float const* >::value
));
43 VERIFY(( internal::is_same
< internal::add_const_on_value_type
<float>::type
, const float >::value
));
44 VERIFY(( internal::is_same
< internal::add_const_on_value_type
<const float>::type
, const float >::value
));
46 VERIFY(( internal::is_same
< internal::add_const_on_value_type
<const float* const>::type
, const float* const>::value
));
47 VERIFY(( internal::is_same
< internal::add_const_on_value_type
<float* const>::type
, const float* const>::value
));
49 VERIFY(( internal::is_same
<float,internal::remove_reference
<float&>::type
>::value
));
50 VERIFY(( internal::is_same
<const float,internal::remove_reference
<const float&>::type
>::value
));
51 VERIFY(( internal::is_same
<float,internal::remove_pointer
<float*>::type
>::value
));
52 VERIFY(( internal::is_same
<const float,internal::remove_pointer
<const float*>::type
>::value
));
53 VERIFY(( internal::is_same
<float,internal::remove_pointer
<float* const >::type
>::value
));
55 VERIFY(internal::meta_sqrt
<1>::ret
== 1);
56 #define VERIFY_META_SQRT(X) VERIFY(internal::meta_sqrt<X>::ret == int(std::sqrt(double(X))))
67 VERIFY_META_SQRT(255);
68 VERIFY_META_SQRT(256);
69 VERIFY_META_SQRT(257);
70 VERIFY_META_SQRT(1023);
71 VERIFY_META_SQRT(1024);
72 VERIFY_META_SQRT(1025);