123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- //
- // Copyright 2012-2019 Antony Polukhin.
- //
- // Distributed under 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 <boost/type_index.hpp>
- #include "test_lib.hpp"
- #include <boost/core/lightweight_test.hpp>
- namespace user_defined_namespace {
- class user_defined{};
- }
- void comparing_types_between_modules()
- {
- boost::typeindex::type_index t_const_int = boost::typeindex::type_id_with_cvr<const int>();
- boost::typeindex::type_index t_int = boost::typeindex::type_id<int>();
- BOOST_TEST_EQ(t_int, test_lib::get_integer());
- BOOST_TEST_EQ(t_const_int, test_lib::get_const_integer());
- BOOST_TEST_NE(t_const_int, test_lib::get_integer());
- BOOST_TEST_NE(t_int, test_lib::get_const_integer());
- boost::typeindex::type_index t_const_userdef
- = boost::typeindex::type_id_with_cvr<const user_defined_namespace::user_defined>();
- boost::typeindex::type_index t_userdef
- = boost::typeindex::type_id<user_defined_namespace::user_defined>();
- BOOST_TEST_EQ(t_userdef, test_lib::get_user_defined_class());
- BOOST_TEST_EQ(t_const_userdef, test_lib::get_const_user_defined_class());
- BOOST_TEST_NE(t_const_userdef, test_lib::get_user_defined_class());
- BOOST_TEST_NE(t_userdef, test_lib::get_const_user_defined_class());
- BOOST_TEST_NE(t_userdef, test_lib::get_integer());
- BOOST_TEST_NE(t_const_userdef, test_lib::get_integer());
- BOOST_TEST_NE(t_int, test_lib::get_user_defined_class());
- BOOST_TEST_NE(t_const_int, test_lib::get_const_user_defined_class());
- // MSVC supports detect_missmatch pragma, but /GR- silently switch disable the link time check.
- // /GR- undefies the _CPPRTTI macro. Using it to detect working detect_missmatch pragma.
- #if !defined(BOOST_HAS_PRAGMA_DETECT_MISMATCH) || !defined(_CPPRTTI)
- test_lib::accept_typeindex(t_int);
- #endif
- }
- int main() {
- comparing_types_between_modules();
- return boost::report_errors();
- }
|