Quick Q: When do you need to declare a variable constexpr? -- StackOverflow
Quick A: When you want to use the variable in a way that requires its value to be known at compile time.
Here's a short nugget that helps demonstrate the meaning of constexpr:
Why is constexpr required even though member function is constexpr?
The following does not compile unless I put
constexprbeforeinitializer_list:constexpr std::initializer_list<int> il = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; std::array<int, il.size()> a;But
initializer_list sizeisconstexpr:constexpr size_type size() const;

While we're waiting for Concepts Lite, Eric shows how we can already do quite a bit in C++11 while planning for a transition to language support when it's available.