Disable some concept checks in C++11
Jonathan Wakely
jwakely@redhat.com
Fri Mar 10 12:17:00 GMT 2017
On 08/03/17 22:03 +0100, François Dumont wrote:
>On 05/03/2017 22:58, Jonathan Wakely wrote:
>>On 5 March 2017 at 16:03, François Dumont wrote:
>>>It checks for both valid copy constructor and assignment operator. As far as
>>>I know containers never use copy assignment operator and never did. So why
>>>checking for its availability ?
>>Of course they use it, as a quick search in the standard shows.
>>
>>Consider:
>>
>>std::vector<X> v(1), v2(1);
>>v1 = v2;
>>
>>Before C++11 elements were also assigned when inserting or erasing in
>>a vector (anywhere except the end), or when using std::sort, or using
>>std::remove_if etc. etc.
>>Now they will be move-assigned if possible, but some operations still
>>require CopyAssignable.
>>
> Indeed, I had in mind more elementary operations that could
>justify this concept check at class scope while in fact not complying
>to it only impacts a limited number of operations on the container. I
>start getting the point why current concept checks are not really
>used.
>
> So slist also require it for its assign implementation. And a
>slist of not assignable type instances is used in
>libstdc++-prettyprinters/59161.cc. Should I just forget about it ? Go
>ahead with the patch except the slist part and then disable concept
>checks ?
What do you mean "and then disable concept checks"?
More information about the Libstdc++
mailing list