diff options
Diffstat (limited to 'src/boost/libs/container/test/tree_test.cpp')
-rw-r--r-- | src/boost/libs/container/test/tree_test.cpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/boost/libs/container/test/tree_test.cpp b/src/boost/libs/container/test/tree_test.cpp new file mode 100644 index 00000000..e0755967 --- /dev/null +++ b/src/boost/libs/container/test/tree_test.cpp @@ -0,0 +1,119 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2004-2013. 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) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#include <boost/container/detail/tree.hpp> +#include <boost/container/adaptive_pool.hpp> +#include <boost/container/new_allocator.hpp> +#include <boost/move/traits.hpp> + +#include <iostream> + +#include "movable_int.hpp" +#include "dummy_test_allocator.hpp" + +using namespace boost::container; + +typedef std::pair<const test::movable_and_copyable_int, test::movable_and_copyable_int> pair_t; + +namespace boost { +namespace container { + +//Explicit instantiation to detect compilation errors + +namespace dtl { + +//Instantiate base class as previous instantiations don't instantiate inherited members +template class tree + < pair_t + , select1st<test::movable_and_copyable_int> + , std::less<test::movable_and_copyable_int> + , test::simple_allocator<pair_t> + , tree_assoc_defaults + >; + +template class tree + < pair_t + , select1st<test::movable_and_copyable_int> + , std::less<test::movable_and_copyable_int> + , std::allocator<pair_t> + , tree_assoc_defaults + >; + +template class tree + < pair_t + , select1st<test::movable_and_copyable_int> + , std::less<test::movable_and_copyable_int> + , adaptive_pool<pair_t> + , tree_assoc_defaults + >; + +template class tree + < test::movable_and_copyable_int + , identity<test::movable_and_copyable_int> + , std::less<test::movable_and_copyable_int> + , test::simple_allocator<test::movable_and_copyable_int> + , tree_assoc_defaults + >; + +template class tree + < test::movable_and_copyable_int + , identity<test::movable_and_copyable_int> + , std::less<test::movable_and_copyable_int> + , std::allocator<test::movable_and_copyable_int> + , tree_assoc_defaults + >; + +template class tree + < test::movable_and_copyable_int + , identity<test::movable_and_copyable_int> + , std::less<test::movable_and_copyable_int> + , adaptive_pool<test::movable_and_copyable_int> + , tree_assoc_defaults + >; + +} //dtl { + +}} //boost::container + +int main () +{ + //////////////////////////////////// + // has_trivial_destructor_after_move testing + //////////////////////////////////// + // default + { + typedef boost::container::dtl::tree<int, void, std::less<int>, void, void> tree; + typedef tree::allocator_type allocator_type; + typedef boost::container::allocator_traits<allocator_type>::pointer pointer; + typedef tree::key_compare key_compare; + if (boost::has_trivial_destructor_after_move<tree>::value != + boost::has_trivial_destructor_after_move<allocator_type>::value && + boost::has_trivial_destructor_after_move<pointer>::value && + boost::has_trivial_destructor_after_move<key_compare>::value) { + std::cerr << "has_trivial_destructor_after_move(default allocator) test failed" << std::endl; + return 1; + } + } + // std::allocator + { + typedef boost::container::dtl::tree<int, void, std::less<int>, std::allocator<int>, void> tree; + typedef tree::allocator_type allocator_type; + typedef boost::container::allocator_traits<allocator_type>::pointer pointer; + typedef tree::key_compare key_compare; + if (boost::has_trivial_destructor_after_move<tree>::value != + boost::has_trivial_destructor_after_move<allocator_type>::value && + boost::has_trivial_destructor_after_move<pointer>::value && + boost::has_trivial_destructor_after_move<key_compare>::value) { + std::cerr << "has_trivial_destructor_after_move(std::allocator) test failed" << std::endl; + return 1; + } + } + + return 0; +} |