Я использую CLang 8.0 и приведу этот пример кода:
#include <locale>
#include <sstream>
#include <iostream>
struct slash : std::numpunct<char> {
char do_decimal_point() const { return '/'; } // separate with slash
};
int main()
{
std::ostringstream oss;
auto slash_locale = std::locale(std::cout.getloc(), new slash);
std::locale::global( slash_locale );
oss << 4.5;
std::cout << oss.str();
}
То, что я получаю, это "4.5". Мой вопрос: это поведение игнорирования локали, написанной в стандарте? Потому что мой коллега использует XCode и заявляет, что там печатается «4/5». Я хотел бы понять, предполагается ли, что это будет определено реализацией, или если стандарт, если моя коллега заявляет правду, нарушается.