123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- //////////////////////////////////////////////////////////////////////////////
- //
- // (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;
- }
|