stoi("hello") currently throws an exception where what() only outputs "stoi" (nothing else). The reason is (if I analyzed it correctly): - stoi etc. pass their name (just "stoi") to __stoa as __name - __stoa calls: std::__throw_invalid_argument(__name); - which usually seems to call _GLIBCXX_THROW_OR_ABORT Some component (either __stoa() or __throw_invalid_argument()) should extend the message at least a bit. E.g. __stoa() might call std::__throw_invalid_argument("invalid argument for " + __name) (using a valid syntax of course).
applies to any version AFAIK
(In reply to Nicolai Josuttis from comment #0) > stoi("hello") currently throws an exception where what() only outputs "stoi" > (nothing else). The type of the exception is significant too. It can either throw std::invalid_argument("stoi") or std::out_of_range("stoi"). > Some component (either __stoa() or __throw_invalid_argument()) > should extend the message at least a bit. > E.g. __stoa() might call > std::__throw_invalid_argument("invalid argument for " + __name) This makes it (very slightly) more likely to throw std::bad_alloc than to throw what we actually want to throw. It's probably a reasonable trade-off to get a better what() message though.