Quick Q: 'Constexpr' vs 'extern const'. Which has priority?
Quick A: If you need a compile time constant, you cannot use extern.
Recently on SO:
'Constexpr' vs 'extern const'. Which has priority?
Using
extern constin the header file only tells the compiler that the variable exists and that it is not modifiable. It doesn't tell the compiler its value which means it's not a compile-time constant anymore. If it's not a compile-time constant then it can't be used for e.g.caseor as an array size.As said by M.M in the comment, either use
const int MAX_NUMBER_OF_ROWS= 99;or
constexpr int MAX_NUMBER_OF_ROWS= 99;directly in the header file and it will be a compile-time constant in all translation units that include the header file.

ACCU’s Overload journal of August 2016 is out. It contains the following C++ related articles.
Have you registered for CppCon 2016 in September? Don’t delay –
Have you registered for CppCon 2016 in September? Don’t delay –
Have you registered for CppCon 2016 in September? Don’t delay –