//======================================================================= // Copyright Baptiste Wicht 2013-2016. // Distributed under the terms of the MIT License. // (See accompanying file LICENSE or copy at // http://www.opensource.org/licenses/MIT) //======================================================================= #include #include #include #include #include "test.hpp" namespace { void test_is_same(){ check(std::is_same::value, "Invalid is_same"); check(std::is_same::value, "Invalid is_same"); check(!std::is_same::value, "Invalid is_same"); check(!std::is_same::value, "Invalid is_same"); } void test_iterator_traits(){ char* a = nullptr; check(std::is_same::value_type, char>::value, "Invalid value_type in iterator_traits"); check(std::is_same::value_type, const double>::value, "Invalid value_type in iterator_traits"); } void test_has_trivial_assign(){ check(std::has_trivial_assign::value, "Invalid has_trivial_assign"); check(std::has_trivial_assign::value, "Invalid has_trivial_assign"); check(std::has_trivial_assign::value, "Invalid has_trivial_assign"); check(!std::has_trivial_assign::value, "Invalid has_trivial_assign"); } struct non_trivial { int a; ~non_trivial(){ a = 9; } }; void test_is_trivially_destructible(){ check(std::is_trivially_destructible::value, "Invalid is_trivially_destructible"); check(std::is_trivially_destructible::value, "Invalid is_trivially_destructible"); check(std::is_trivially_destructible::value, "Invalid is_trivially_destructible"); check(!std::is_trivially_destructible::value, "Invalid is_trivially_destructible"); } } //end of anonymous namespace void traits_tests(){ test_is_same(); test_iterator_traits(); test_has_trivial_assign(); test_is_trivially_destructible(); }