This statement:
return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];
is a non-standard form of return.
In case we compile optimized code that lacks assert function but still want something this code fails to compile.
Separating this to a more standard form solves the issue:
BOOST_ASSERT_MSG( i < N, "out of range" );
return elems[i];