В заголовке C++11 есть три новые функции для преобразования числа в строку.
std::string std::to_string(unsigned long long);
std::string std::to_string(long double);
std::string std::to_string(long long);
Первый вопрос - почему всего 3 функции? Как насчет простого int или unsigned int и т. д.?
Второй вопрос - почему to_string не выдает исключение в следующем коде?
long double x = std::numeric_limits<long double>::quiet_NaN();
std::string i = std::to_string( x );
long double c = std::stold( i ); // i = "1.#QNAN"
И третий вопрос - почему c равно 1.0 ?