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;