Согласно текущему стандарту (20.7.9), std::allocator
имеет член propagate_on_container_move_assignment
, для которого установлено значение true_type
:
распределитель классов шаблонов
{
public:
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef T * указатель;
typedef const T * const_pointer;
typedef T & reference;
typedef const T & const_reference;
typedef T value_type;
шаблон struct rebind {typedef allocator other; };
typedef true_type spread_on_container_move_assignment;
typedef true_type is_always_equal;
[...]
std::allocator
не имеет элементов данных и всегда сравнивается как равный с любыми другими std::allocator
. Есть ли причина перемещать эти распределители по умолчанию при назначении перемещения?
is_always_equal
был добавлен после C ++ 14. - person Kerrek SB   schedule 05.02.2017