123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- //////////////////////////////////////////////////////////////////////////////
- //
- // (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/flat_tree.hpp>
- #include <boost/container/small_vector.hpp>
- #include <boost/container/stable_vector.hpp>
- #include <boost/container/static_vector.hpp>
- #include <iostream>
- #include "movable_int.hpp"
- #include "dummy_test_allocator.hpp"
- using namespace boost::container;
- typedef boost::container::dtl::pair<test::movable_and_copyable_int, test::movable_and_copyable_int> pair_t;
- namespace boost {
- namespace container {
- //Explicit instantiation to detect compilation errors
- namespace dtl {
- template class flat_tree
- < pair_t
- , select1st<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , test::simple_allocator<pair_t>
- >;
- template class flat_tree
- < pair_t
- , select1st<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , std::allocator<pair_t>
- >;
- template class flat_tree
- < pair_t
- , select1st<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , small_vector<pair_t, 10>
- >;
- template class flat_tree
- < pair_t
- , select1st<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , stable_vector<pair_t>
- >;
- template class flat_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>
- >;
- template class flat_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>
- >;
- template class flat_tree
- < test::movable_and_copyable_int
- , identity<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , small_vector<test::movable_and_copyable_int, 10>
- >;
- template class flat_tree
- < test::movable_and_copyable_int
- , identity<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , stable_vector<test::movable_and_copyable_int>
- >;
- template class flat_tree
- < test::movable_and_copyable_int
- , identity<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , static_vector<test::movable_and_copyable_int, 10>
- >;
- } //dtl {
- }} //boost::container
- #if (__cplusplus > 201103L)
- #include <vector>
- namespace boost{
- namespace container{
- namespace dtl{
- template class flat_tree
- < test::movable_and_copyable_int
- , identity<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , std::vector<test::movable_and_copyable_int>
- >;
- template class flat_tree
- < pair_t
- , select1st<test::movable_and_copyable_int>
- , std::less<test::movable_and_copyable_int>
- , std::vector<pair_t>
- >;
- } //dtl {
- }} //boost::container
- #endif
- int main ()
- {
- ////////////////////////////////////
- // has_trivial_destructor_after_move testing
- ////////////////////////////////////
- // default
- {
- typedef boost::container::dtl::flat_tree<int, boost::container::dtl::identity<int>,
- std::less<int>, void> tree;
- typedef tree::container_type container_type;
- typedef tree::key_compare key_compare;
- if (boost::has_trivial_destructor_after_move<tree>::value !=
- boost::has_trivial_destructor_after_move<container_type>::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::flat_tree<int, boost::container::dtl::identity<int>,
- std::less<int>, std::allocator<int> > tree;
- typedef tree::container_type container_type;
- typedef tree::key_compare key_compare;
- if (boost::has_trivial_destructor_after_move<tree>::value !=
- boost::has_trivial_destructor_after_move<container_type>::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;
- }
|