compile_map.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 176 行

CPP
176
字号
// Copyright 2006-2008 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)// This test creates the containers with members that meet their minimum// requirements. Makes sure everything compiles and is defined correctly.#include <boost/unordered_map.hpp>#include <iostream>#include "../helpers/test.hpp"#include "../objects/minimal.hpp"#include "./compile_tests.hpp"// Explicit instantiation to catch compile-time errorstemplate class boost::unordered_map<    test::minimal::assignable,    test::minimal::default_copy_constructible,    test::minimal::hash<test::minimal::assignable>,    test::minimal::equal_to<test::minimal::assignable>,    test::minimal::allocator<test::minimal::assignable> >;template class boost::unordered_multimap<    test::minimal::assignable,    test::minimal::copy_constructible,    test::minimal::hash<test::minimal::assignable>,    test::minimal::equal_to<test::minimal::assignable>,    test::minimal::allocator<test::minimal::assignable> >;UNORDERED_AUTO_TEST(test0){    typedef std::pair<test::minimal::assignable const,            test::minimal::copy_constructible> value_type;    value_type value(            test::minimal::assignable::create(),            test::minimal::copy_constructible::create());    std::cout<<"Test unordered_map.\n";    boost::unordered_map<int, int> int_map;    boost::unordered_map<        test::minimal::assignable,        test::minimal::copy_constructible,        test::minimal::hash<test::minimal::assignable>,        test::minimal::equal_to<test::minimal::assignable>,        test::minimal::allocator<value_type> > map;    container_test(int_map, std::pair<int const, int>(0, 0));    container_test(map, value);    std::cout<<"Test unordered_multimap.\n";    boost::unordered_multimap<int, int> int_multimap;    boost::unordered_multimap<        test::minimal::assignable,        test::minimal::copy_constructible,        test::minimal::hash<test::minimal::assignable>,        test::minimal::equal_to<test::minimal::assignable>,        test::minimal::allocator<value_type> > multimap;    container_test(int_multimap, std::pair<int const, int>(0, 0));    container_test(multimap, value);}UNORDERED_AUTO_TEST(equality_tests) {    typedef std::pair<test::minimal::assignable const,            test::minimal::copy_constructible> value_type;    boost::unordered_map<int, int> int_map;    boost::unordered_map<        test::minimal::assignable,        test::minimal::copy_constructible_equality_comparable,        test::minimal::hash<test::minimal::assignable>,        test::minimal::equal_to<test::minimal::assignable>,        test::minimal::allocator<value_type> > map;    equality_test(int_map);    equality_test(map);    boost::unordered_multimap<int, int> int_multimap;    boost::unordered_multimap<        test::minimal::assignable,        test::minimal::copy_constructible_equality_comparable,        test::minimal::hash<test::minimal::assignable>,        test::minimal::equal_to<test::minimal::assignable>,        test::minimal::allocator<value_type> > multimap;    equality_test(int_multimap);    equality_test(multimap);}UNORDERED_AUTO_TEST(test1) {    boost::hash<int> hash;    std::equal_to<int> equal_to;    int value = 0;    std::pair<int const, int> map_value(0, 0);    std::cout<<"Test unordered_map.\n";    boost::unordered_map<int, int> map;    unordered_unique_test(map, map_value);    unordered_map_test(map, value, value);    unordered_test(map, value, map_value, hash, equal_to);    unordered_map_functions(map, value, value);    std::cout<<"Test unordered_multimap.\n";    boost::unordered_multimap<int, int> multimap;    unordered_equivalent_test(multimap, map_value);    unordered_map_test(multimap, value, value);    unordered_test(multimap, value, map_value, hash, equal_to);}UNORDERED_AUTO_TEST(test2){    test::minimal::assignable assignable        = test::minimal::assignable::create();    test::minimal::copy_constructible copy_constructible        = test::minimal::copy_constructible::create();    test::minimal::hash<test::minimal::assignable> hash        = test::minimal::hash<test::minimal::assignable>::create();    test::minimal::equal_to<test::minimal::assignable> equal_to        = test::minimal::equal_to<test::minimal::assignable>::create();    typedef std::pair<test::minimal::assignable const,            test::minimal::copy_constructible> map_value_type;    map_value_type map_value(assignable, copy_constructible);    std::cout<<"Test unordered_map.\n";    boost::unordered_map<        test::minimal::assignable,        test::minimal::copy_constructible,        test::minimal::hash<test::minimal::assignable>,        test::minimal::equal_to<test::minimal::assignable>,        test::minimal::allocator<map_value_type> > map;    unordered_unique_test(map, map_value);    unordered_map_test(map, assignable, copy_constructible);    unordered_test(map, assignable, map_value, hash, equal_to);    boost::unordered_map<        test::minimal::assignable,        test::minimal::default_copy_constructible,        test::minimal::hash<test::minimal::assignable>,        test::minimal::equal_to<test::minimal::assignable>,        test::minimal::allocator<map_value_type> > map2;    test::minimal::default_copy_constructible default_copy_constructible;    unordered_map_functions(map2, assignable, default_copy_constructible);    std::cout<<"Test unordered_multimap.\n";    boost::unordered_multimap<        test::minimal::assignable,        test::minimal::copy_constructible,        test::minimal::hash<test::minimal::assignable>,        test::minimal::equal_to<test::minimal::assignable>,        test::minimal::allocator<map_value_type> > multimap;    unordered_equivalent_test(multimap, map_value);    unordered_map_test(multimap, assignable, copy_constructible);    unordered_test(multimap, assignable, map_value, hash, equal_to);}RUN_TESTS()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?