Blame view

3rdparty/boost_1_81_0/libs/container/proj/to-do.txt 2.17 KB
977ed18d   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  ->Change "insert" and "push_back"/"push_front" to catch non-const rvalues
  ->Add an example with stateful allocators
  ->Add test to check convertible types in push_back/insert
  ->Align with C++11 [multi]map::insert(P &&p) overload.
  ->Fix code marked with "//to-do: if possible, an efficient way to deallocate allocated blocks"
  ->Add BOOST_CONTAINER_TRY, etc. macros to allow disabling exceptions only in this library (just like Boost.Intrusive)
  ->Add macro to change the default allocator std::allocator to another one
  ->Add front()/back() to string
  
  
  Review allocator traits
  -> Avoid any rebind<>::other
  -> Review select_on_container_copy_xxx
  -> Review propagate_on_xxx
  -> Put default constructed containers with their own constructor (different nothrow guarantees). Optimization, not needed
  -> Default + swap move constructors correct?
  -> Review container documentation in swap/copy/move regarding allocators
  
  Check all move constructors: swap might not be a valid idiom, allocators must be move constructed,
  intrusive containers are now movable
  
  Add and test:
  
  Test different propagation values and with inequal allocators
  
  propagate_on_container_move_assignment
  select_on_container_copy_construction
  propagate_on_container_swap
  propagate_on_container_copy_assignment
  
  Test move constructors with data values and unequal allocators
  
  An allocator should use a smart allocator not constructible from raw pointers to catch missing pointer_traits calls
  
  Add initializer lists
  
  Write forward_list
  
  check move if noexcept conditions in vector, deque and stable_vector
  
  Add noexcept testing using static_assert (Howard Hinnants's suggestion):
  
     #include <type_traits>
  
     struct A
     {
        void foo() noexcept;
     };
  
     static_assert(noexcept(std::declval<A&>().foo()), "A::foo() should be noexcept");
  
  Detect always equal or unequal allocators at compiler time. operator== returns true_type or false_type
  
  change virtual functions with pointers to avoid template instantiation for every type
  
  Add hash for containers
  
  Add std:: hashing support
  
  Fix trivial destructor after move and other optimizing traits
  
  Implement n3586, "Splicing Maps and Sets" (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3586.pdf)