Suppose we have a class Foo
with a non-explicit
constructor from an int
. Then for the following functions:
Foo makeFoo1() { return 123; }
Foo makeFoo2() { return {123}; }
I think makeFoo1
requires that Foo
's copy/move ctor is accessible, and it's possible (though unlikely) that the compiler does not elide the copy and thus results in a true copy/move.
For makeFoo2
, since we are using copy-list-initialization, no copy/move can ever occurred.
Should I really worry about this and put arguments to non-explicit
ctors in braces whenever I can (as in makeFoo2
)?
Aucun commentaire:
Enregistrer un commentaire