On 2017-04-07 06:40, Sergio Martins wrote:
> Some time ago I documented the guidelines on passing by value vs
> const-ref:
> https://wiki.qt.io/API_Design_Principles#Passing_by_const-ref_vs._Passing_by_value
> 
> But the reality is that passing small structs by value is not very
> popular and Qt's API mostly passes them by const-ref.
> 
> The guideline is very simple:
> - If your type has a non-trivial copy-CTOR or non-trivial DTOR then pass
> by const-ref, no matter how small it is, to avoid calling those methods.
> *[1]
> - If your type has trivial CTOR and trivial DTOR, pass by value if it's
> small, otherwise const-ref. Small meaning <= 16 bytes.
> 
> The idea is that by value allows the struct's members to be passed in
> CPU registers, see [2] for extensive research.

Option 2: Teach C++ to choose automatically if such types should be
passed by value or by const-reference.

This has the benefit that it can DTRT even when TRT varies by platform.

(Option 3: Add a template class that implements Option 2? Is this possible?)

-- 
Matthew
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to