Performance cost of passing by value vs. by reference or by pointer?
There is one thing nobody mentioned. There is a certain GCC optimization called IPA SRA, that replaces “pass by reference” with “pass by value” automatically: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html (-fipa-sra) This is most likely done for scalar types (eg. int, double, etc), that does not have non-default copy semantics and can fit into cpu registers. This makes void(const … Read more