This is a good article about constant expressions and computations at compile time. It gives good coverage of the new
constexpr keyword for allowing compile-time and run-time evalution.
constexpr is discussed rigorously with information on the rules required by the facility.
by Andrzej Krzemieński
[...] But now, consider the following example:const int i = 2; const char array[ i == 2 ? 64 : throw exception() ];
Throwing an exception (which is an expression) cannot be evaluated at compile-time, but since
i == 2is true, the third argument of conditional operator should not be evaluated; at least at run-time. So is the above a valid code? Not in C++03. It is valid however in C++11. Does this sound incredible? [...]