summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/container/proj/to-do.txt
blob: 9c33223820de3c66c181c60ce5851326507a156d (plain)
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)