Ich habe den Eindruck, dass eine "Funktion, die immer 5 zurückgibt" die Bedeutung von "Aufruf einer Funktion" aufhebt oder verwässert. Es muss einen Grund oder einen Bedarf für diese Fähigkeit geben, sonst wäre sie nicht in C++11 enthalten. Warum ist sie da?
// preprocessor.
#define MEANING_OF_LIFE 42
// constants:
const int MeaningOfLife = 42;
// constexpr-function:
constexpr int MeaningOfLife () { return 42; }
Wenn ich eine Funktion schreibe, die einen literalen Wert zurückgibt, und ich komme zu einem Code-Review, dann würde mir jemand sagen, ich solle einen konstanten Wert deklarieren, anstatt return 5 zu schreiben.