Я использую режим _GLIBCXX_DEBUG, чтобы помочь найти ошибки в моем коде, но у меня возникла проблема, которая, на мой взгляд, является ошибкой в библиотеке, но, надеюсь, кто-то может сказать мне, что я просто что-то делаю не так. Вот короткий пример, в котором проблема с репро:
#define _GLIBCXX_DEBUG
#include <iostream>
#include <sstream>
int main (int argc, const char * argv[]) {
std::ostringstream ostr;
ostr << 1.2;
std::cout << "Result: " << ostr.str() << std::endl;
return 0;
}
Если я закомментирую #define, то результат (как и ожидалось):
Result: 1.2
С определением _GLIBCXX_DEBUG, однако, вывод просто:
Result:
Я проследил это до поля _M_num_put потока, оставляемого как NULL, что вызывает исключение (и перехват) в потоке и не приводит к выводу числа. Предполагается, что _M_num_put - это std :: num_put из локали (я не претендую на то, чтобы понять, как это должно работать, это только то, что я узнал в своем поиске до сих пор).
Я запускаю его на Mac с XCode и пробовал использовать как LLVM GCC 4.2, так и Apple LLVM Compiler 3.0 в качестве компилятора с теми же результатами.
Буду признателен за любую помощь в решении этого. Я хочу продолжить работу с режимом _GLIBCXX_DEBUG в моем коде, но это мешает этому.