1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This file is part of Eigen, a lightweight C++ template library 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// for linear algebra. 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr> 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This Source Code Form is subject to the terms of the Mozilla 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Public License v. 2.0. If a copy of the MPL was not distributed 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include "main.h" 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathvoid test_meta() 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath typedef float & FloatRef; 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath typedef const float & ConstFloatRef; 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY((internal::conditional<(3<4),internal::true_type, internal::false_type>::type::value)); 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,float>::value)); 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY((!internal::is_same<float,double>::value)); 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY((!internal::is_same<float,float&>::value)); 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY((!internal::is_same<float,const float&>::value)); 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_all<const float&>::type >::value)); 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_all<const float*>::type >::value)); 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_all<const float*&>::type >::value)); 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_all<float**>::type >::value)); 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_all<float**&>::type >::value)); 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_all<float* const *&>::type >::value)); 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_all<float* const>::type >::value)); 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // test add_const 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const<float>::type, const float >::value)); 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const<float*>::type, float* const>::value)); 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const<float const*>::type, float const* const>::value)); 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const<float&>::type, float& >::value)); 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // test remove_const 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::remove_const<float const* const>::type, float const* >::value)); 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::remove_const<float const*>::type, float const* >::value)); 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::remove_const<float* const>::type, float* >::value)); 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // test add_const_on_value_type 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const_on_value_type<float&>::type, float const& >::value)); 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const_on_value_type<float*>::type, float const* >::value)); 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const_on_value_type<float>::type, const float >::value)); 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const_on_value_type<const float>::type, const float >::value)); 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const_on_value_type<const float* const>::type, const float* const>::value)); 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same< internal::add_const_on_value_type<float* const>::type, const float* const>::value)); 51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_reference<float&>::type >::value)); 53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<const float,internal::remove_reference<const float&>::type >::value)); 54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_pointer<float*>::type >::value)); 55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<const float,internal::remove_pointer<const float*>::type >::value)); 56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(( internal::is_same<float,internal::remove_pointer<float* const >::type >::value)); 57c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 58c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY(internal::meta_sqrt<1>::ret == 1); 59c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath #define VERIFY_META_SQRT(X) VERIFY(internal::meta_sqrt<X>::ret == int(internal::sqrt(double(X)))) 60c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(2); 61c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(3); 62c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(4); 63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(5); 64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(6); 65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(8); 66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(9); 67c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(15); 68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(16); 69c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(17); 70c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(255); 71c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(256); 72c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(257); 73c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(1023); 74c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(1024); 75c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath VERIFY_META_SQRT(1025); 76c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 77