Setting locales on OS X crashes
c++, locale, macos, xlocale
Solution
I don't think you're using xlocale. I believe that your problem is with libstdc++, which uses a different locale support library that is not supported on OS X, as the question EitanT links to states.
If you switch to libc++ your program will work.
Problem
The following code works fine on Linux but throws an exception on 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; } ``` The output on OS X is: `locale::facet::_S_create_c_locale` name not valid However, the standard explicitly says that The set of valid string argument values is `"C"`, `""`, and any implementation-defined values. So whatever causes the behaviour above is violating the standard. The compiler used is clang++ 3.1 (tags/Apple/clang-318.0.58); I’ve also tried it with GCC 4.7, installed via Homebrew, with the same result. Can other people validate this problem? What causes it? Am I doing anything wrong? Is this a bug in OS X? (Maybe this relates to another `xlocale` problem but the errors are actually completely different.)