// Copyright 2006 Daniel James. // 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 #include #include struct count_copies { static int count; count_copies() { ++count; } count_copies(count_copies const& x) { ++count; } private: count_copies& operator=(count_copies const&); }; std::size_t hash_value(count_copies const& x) { return 0; } bool operator==(count_copies const& x, count_copies const& y) { return true; } int count_copies::count; template void unnecessary_copy_test(T*) { count_copies::count = 0; T x; typename T::value_type a; BOOST_TEST(count_copies::count == 1); x.insert(a); BOOST_TEST(count_copies::count == 2); } int main() { unnecessary_copy_test((boost::unordered_set*) 0); unnecessary_copy_test((boost::unordered_multiset*) 0); unnecessary_copy_test((boost::unordered_map*) 0); unnecessary_copy_test((boost::unordered_multimap*) 0); return boost::report_errors(); }