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