- Are constexpr references ever useful? (i.e., “better” than const references)
They are guaranteed to be initiailized before the program starts, whereas a reference to const can be initialized during dynamic initialization, after the program starts running.
- If yes, how can I effectively define them?
A constexpr
reference has to bind to a global, not a local variable (or more formally, it has to bind to something with static storage duration).
A reference is conceptually equivalent to taking the address of the variable, and the address of a local variable is not a constant (even in main
which can only be called once and so its local variables are only initialized once).