[cfe-users] Warnings for implicit constructors and wrong usage of auto

George Karpenkov via cfe-users cfe-users at lists.llvm.org
Tue May 15 15:05:18 PDT 2018


+cfe-dev

Hi Andrea,

I think you might get more luck asking on the cfe-dev mailing list.

George

> On May 15, 2018, at 1:15 PM, Andrea Arteaga via cfe-users <cfe-users at lists.llvm.org> wrote:
> 
> Dear all,
> Recently, my team suffered from a bug due to a double bad usage of C++.
> 
> We have a function returning a reference to an object:
> 
>     Object& GetObject();
> 
> Sometimes we use this function like this:
> 
>     auto obj = GetObject();
> 
> This triggers a copy of the object, which we really don't mean. The two problems are:
> 1. Object does not delete the copy constructor, nor does it declare one. We have a policy of never using implicitly-declared constructors, we either use `=delete` or `=default`. Nevertheless we missed this class.
> 2. A reference is demoted to a rvalue due to the usage of `auto` instead of `auto&`.
> 
> We would like clang to issue warnings in these two cases. The latter case does not really seem easy to warn about, but the former looks straightforward.
> 
> Does clang offer such warnings?
> 
> Thanks
> Andrea Arteaga 
> 
> _______________________________________________
> cfe-users mailing list
> cfe-users at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20180515/7159e7c9/attachment.html>


More information about the cfe-users mailing list