Consider this code:
std::istringstream input("123A"); double d; input>>d;
Compiled with gcc or cl (and their usual standard libraries) it reads 123 into d and leaves the input position on the 'A'.
With libc++ on OS X [Apple LLVM version 9.0.0 (clang-900.0.39.2)] it doesn't read anything and leaves the input position at the start.
On the other hand, all platforms read the number if the double d is replaced with an int.
In the n4659 draft of C++17, §22.214.171.124.2 num_get virtual functions, Stage 2, seems to be the relevant section. Most of it is about character encodings and thousands separators; the key part is "...a check is made to determine if c is allowed as the next character of an input field of the conversion specifier returned by Stage 1. If so, it is accumulated." This seems to describe the gcc/cl behaviour.