// Boost.Geometry (aka GGL, Generic Geometry Library) // Unit Test // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include struct user_defined {}; template void test() { typedef typename bg::select_most_precise::type type; bool is_same = boost::is_same::type::value; BOOST_CHECK_MESSAGE(is_same, "The most precise of types " << "T1: {" << typeid(T1).name() << " | s: " << sizeof(T1) << "}" << " and " << "T2: {" << typeid(T2).name() << " | s: " << sizeof(T2) << "}" << " does not match " << "ExpectedType: {" << typeid(ExpectedType).name() << " | s: " << sizeof(ExpectedType) << "}"); } int test_main(int, char* []) { // fp only test(); test(); test(); test(); // integer only test(); test(); test(); test(); // int/fp test(); test(); test(); test(); test(); if ( sizeof(long double) > sizeof(double) ) { // This cannot be done for MSVC because double/long double is the same // This is also true for Android test(); test(); } // with any other non-integer/float class test(); test(); test(); test(); test(); // should not compile //test(); return 0; }