[PATCH 3/3] Fix condition for std::variant to be copy constructible

Jonathan Wakely jwakely@redhat.com
Wed Apr 17 19:28:00 GMT 2019


On 17/04/19 19:20 +0300, Ville Voutilainen wrote:
>On Wed, 17 Apr 2019 at 19:12, Jonathan Wakely <jwakely@redhat.com> wrote:
>>
>> The standard says the std::variant copy constructor is defined as
>> deleted unless all alternative types are copy constructible, but we were
>> making it also depend on move constructible. Fix the condition and
>> enhance the tests to check the semantics with pathological copy-only
>> types (i.e. supporting copying but having deleted moves).
>>
>> The enhanced tests revealed a regression in copy assignment for
>> non-trivial alternative types, where the assignment would not be
>> performed because the condition in the _Copy_assign_base visitor is
>> false: is_same_v<remove_reference_t<T&>, remove_reference_t<const T&>>.
>>
>>
>> Tested powerpc64le-linux.
>>
>> I plan to commit all three of these patches later today, unless
>> somebody sees a problem with them.
>
>Looks good to me.

Thanks. All three patches committed to trunk.



More information about the Libstdc++ mailing list