Lubię uschematyzowaną wiedzę i brakuje mi tego z constexpr
. Jak byście określili zasady kiedy powinno używać się tego słowa kluczowego?
W tej chwili rozumiem to tak, proszę o skorygowanie.
Constexpr
mówi kompilatorowi, że funkcja może zostać wykonana w czasie kompilacji, ale nie musi. Z tego wynika, że słowo kluczowe constexpr
powinno być używane zawsze kiedy ma to jakikolwiek sens.
Preinkrementacja(++i) "wyłącza" wykonanie w czasie kompilacji. (?)
Druga opcja jest lepsza bo pomijamy mnożenie w czasie działania programu.
const int a = 5 * 3;
constexpr int b = 5 * 3;
Nie ma różnicy między tymi liniami i oba sposoby są dobre na definiowanie magic numbers
.
const int a = 5;
constexpr int b = 5;
const int a = 4*12;
kazdy względnie nowy kompilator obliczy w czasie kompilacji, aconstexpr int a = 4*12;
również nie daje gwarancji, że wykona się to w trakcie kompilacji (tylko, że może się wykonać). Dopiero obowiązek wykonania w trakcie kompilacji dajeconsteval
.Cepo