Forward list default default and move constructors
François Dumont
frs.dumont@gmail.com
Thu Jun 29 20:19:00 GMT 2017
Hello
Any feedback regarding this patch ?
Thanks,
François
On 19/06/2017 22:48, François Dumont wrote:
> Hi
>
> Here is the patch to default the default and move constructors on
> the std::forward_list. Putting a move constructor on
> _Fwd_list_node_base helped limiting the code impact of this patch. It
> doesn't have any side effect as iterator types using this base type
> are not defining any move semantic.
>
> I also took the time to optimize the move constructor with
> allocator when allocator is always equal. It avoids initializing an
> empty forward list for nothing.
>
> I think it is fine but could we have an abi issue because of the
> change in forward_list.tcc ?
>
> * include/bits/forward_list.h
> (_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
> (_Fwd_list_impl()): Add noexcept qualification.
> (_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
> (_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
> (_Fwd_list_base()): Default.
> (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)):
> New.
> (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&,
> false_type)): New.
> (_Fwd_list_base(_Fwd_list_base&& __lst, _Node_alloc_type&& __a)): Use
> latter.
> (_Fwd_list_base(_Fwd_list_base&&)): Default.
> (forward_list<>()): Default.
> (forward_list<>(forward_list&&)): Default.
> * include/bits/forward_list.tcc
> (_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&,
> false_type)): New.
> * testsuite/23_containers/forward_list/allocator/default_init.cc:
> New.
>
> Tested under Linux x86_64, ok to commit ?
>
> François
>
More information about the Libstdc++
mailing list