dfaure added a comment.

  In D28478#645702 <https://phabricator.kde.org/D28478#645702>, @ahmadsamir 
wrote:
  
  > I meant something like:
  >  const int i = foo();
  
  
  int is a very bad example for this reasoning. It's cheaper to copy an int 
than to use a reference. That's not the case for a non-POD type like UDSEntry.
  
  > the return from foo() is copied into i and then it's gone.
  >  const int &i = foo();
  >  the return from foo() will be stored in a temporary, and it will stay 
around until i goes out of scope.
  
  Yes.
  
  > So, there's only one "copy" of the return from foo() around, I'd rather 
take the one stored in i
  
  Yes. The other copy I was referring to is the one that happens *inside* the 
implementation of foo(), if it doesn't return a const ref and you do "return 
m_someMember;"
  
  Some people optimize this by using a local const ref, some people return a 
const ref from foo(). Either one works, but doing both is dangerous, like here.
  In general I'd say the best way is to return a value. Like Qt does everywhere.
  Here I'm a bit unsure (about changing the return type in KF6, can't be done 
before anyway) because outside unittests we're not supposed to use exec() so 
there's no risk.

REPOSITORY
  R241 KIO

REVISION DETAIL
  https://phabricator.kde.org/D28478

To: ahmadsamir, #frameworks, dfaure, meven, bruns
Cc: kde-frameworks-devel, LeGast00n, cblack, GB_2, michaelh, ngraham, bruns

Reply via email to