下面的代码工作正常,在Linux上,但抛出的OS X 10.7例外:
#include <iostream>
#include <locale>
#include <stdexcept>
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;
}
在OS X上的输出是:
locale::facet::_S_create_c_locale
名无效
然而,该标准明确地说,
该组有效的字符串参数值是
"C"
,""
,和任何实现定义的值。
所以,无论导致上述行为违反了标准。
所使用的编译器铛++ 3.1(标签/苹果/铛-318.0.58); 我也用GCC 4.7试了一下,通过自制安装,具有相同的结果。
其他人可以验证这个问题? 是什么原因导致的呢? 难道我做错了什么? 这是在OS X中的错误?
(也许这涉及到另一个xlocale
问题 ,但这些错误实际上是完全不同的。)