Следующий код отлично работает в Linux, но вызывает исключение в OS X 10.7:
#include
#include
#include
int main() try {
std::locale::global(std::locale(""));
std::cout << "Using locale: " << std::locale().name() << "\n";
}
catch (std::runtime_error const& e) {
std::cout << e.what() << "\n";
return 1;
}
Вывод в ОС X is:
locale::facet::_S_create_c_locale
имя недействительно
Однако в стандарте явно указано, что
Набор допустимых строковых значений аргументов
"C"
,""
, и любые значения, определенные реализацией.
Таким образом, все, что вызывает описанное выше поведение, нарушает стандарт.
Используемый компилятор clang++ 3.1 (tags/Apple/clang-318.0.58) ; Я также пробовал это с GCC 4.7, установленным через Homebrew, с тем же результатом.
Могут ли другие люди проверить эту проблему? Что ее вызывает? Я делаю что-то не так? Это ошибка в OS X?
(Возможно, это относится к другой проблеме xlocale
, но на самом деле ошибки совершенно другие.)