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

Jonathan Wakely jwakely@redhat.com
Wed Apr 17 16:12:00 GMT 2019


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.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.txt
Type: text/x-patch
Size: 6952 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20190417/9f93a5d9/attachment.bin>


More information about the Libstdc++ mailing list