On Wed, Mar 30, 2016 at 8:52 AM, Gábor Horváth <xazax....@gmail.com> wrote:
> xazax.hun added a comment.
>
> In http://reviews.llvm.org/D18265#386717, @aaron.ballman wrote:
>
>> In http://reviews.llvm.org/D18265#386676, @alexfh wrote:
>>
>> > > What about NonIdiomaticAddignOperator or UnchainableAssignOperator?
>> >
>> >
>> > Yep, "unchainable" doesn't cover all problems the check detects. 
>> > `misc-non-idiomatic-assign-operator` seems good though. I'd wait for the 
>> > original author to chime in before making the change.
>>
>>
>> This doesn't check for idiomatic assignment, unfortunately. For instance, it 
>> allows `T &operator=(T)` which is a copy assignment, but not generally 
>> considered an idiomatic one. (Similar for allowing `volatile`-qualified 
>> parameters.) If we want to go with such a check, I would not be opposed to 
>> it, but we should definitely discuss what "idiomatic" means.
>
>
> IMHO `T &operator=(T)` can be idiomatic e.g. when one uses copy and swap 
> idiom or `T &operator=(S)` where S is a type that can be copied efficiently.

For reference, between the Kona and Jacksonville WG21 meetings, I
started work on a checker for non-idiomatic copy and move assignment
operations because of confusion regarding copy assignment as the core
language sees it and the CopyAssignable library concept. "Idiomatic",
to me, means what the library cares about, not what the core language
does. A checker that tells the user "this is an idiomatic copy
assignment operator" is not very useful when you can't use that type
with the STL in well-defined ways. So if we want "idiomatic" in the
name of the check, we should probably review the patch behavior with
that in mind.

~Aaron
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to