I don't care, I always pass const-ref ;) Beste Grüße / Best regards, Alexander Nassian
> Am 07.04.2017 um 13:30 schrieb Konstantin Tokarev <[email protected]>: > > > > 07.04.2017, 13:41, "Sergio Martins" <[email protected]>: >> Hi, >> >> 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 >> This was discussed in #qt-labs at the time and informally +2'd there. >> >> But the reality is that passing small structs by value is not very >> popular and Qt's API mostly passes them by const-ref. >> >> I think this is a good time to have a more formal conversation, >> bikeshed+popcorn, then write a QUIP and hopefully change the API for Qt >> 6. >> >> 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. > > I think such rule should be enforced by tooling, e.g. something like clazy. > > Btw, do you consider case when properties of type in question are changed > in future Qt version, e.g. new fields or ctors are added (in case of > non-public > class/struct)? > >> >> The idea is that by value allows the struct's members to be passed in >> CPU registers, see [2] for extensive research. >> >> The good news is, even if you don't care about raw performance, passing >> by value is more convenient, as you type less code, so IMO, more fun to >> use. >> >> [1] - Shared pointers should go by value though, I'll try to prove it in >> the QUIP. >> [2] - >> http://www.macieira.org/blog/2012/02/the-value-of-passing-by-value/ >> >> Cheers, >> -- >> Sérgio Martins | [email protected] | Senior Software Engineer >> Klarälvdalens Datakonsult AB, a KDAB Group company >> Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322) >> KDAB - The Qt, C++ and OpenGL Experts >> _______________________________________________ >> Development mailing list >> [email protected] >> http://lists.qt-project.org/mailman/listinfo/development > > -- > Regards, > Konstantin > _______________________________________________ > Development mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/development -- — bitshift dynamics GmbH Neudorfer Str. 1, 79541 Lörrach Registergericht: Amtsgericht Freiburg i. Breisgau, HRB 713747 Geschäftsführer: Alexander Nassian, Markus Pfaffinger http://www.bitshift-dynamics.de Zentrale: +49 762158673 - 0 Fax: +49 7621 58673 - 90 Allgemeine Anfragen: [email protected] Technischer Support: [email protected] Buchhaltung: [email protected] _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
