C++ Musings

Returning by const reference for large objects is better than hoping for copy elision

If T is used over const T&, a copy has to be generated, even if the caller is only interested in a reference. If const T& is used and the caller only wants a reference, no copy is needed.

Example

Defining textual constants as const char* or constexpr const char* is better than std::string

std::string does not store the text locally, but has to execute a new and delete at construction time, which const char* and constexpr const char* do not have to do.

Example