On Friday 20 February 2015 09:51:59 Marc Mutz wrote: > Just make sure - and that's a big part of what I was trying to refer to - > that you don't use that statment in more than one function. Because > identical lambdas in different functions have different types, and thus > templates they are passed to are instantiated anew each time. And compilers > don't merge identical executable code from different template > instantiations (or do they)?
I don't think they can, unless they're running in LTO mode. They need to assume that you compare function pointers and thus each function needs a different entry point, even if they have the same code. The best you can expect is a different entry point that has an unconditional branch to the common code. > Cf. the commits that confine QStringLiteral to static inline functions to > avoid duplicating the QString array data for each use in a different > function. The compiler needs to make the same assumption here. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development