is this a bug in iostream? ...
#include
void money_conversion (){
constexpr double dollars_in_yen=0.01;
constexp
When a std::istream or std::locale library function attempts to parse any numeric input, it always first grabs all contiguous characters in the set "0123456789abcdefxABCDEFX+-" and which might be valid for the type of conversion being done, and only then tries to determine what they mean. See the description of Stage 2 of the num_get processing.
So in your "5e" example, the operator>>(double&) function grabs both '5' and 'e', expecting to find an exponent after the 'e', but stops there, and those characters don't make a valid complete double.