#include <boost/locale.hpp>
#include <iostream>
int main() {
boost::generator gen;
auto &facet = std::use_facet<std::numpunct<char>>(gen("it_IT.UTF-8"));
std::cout << facet.thousand_separator() << ' ' << facet.decimal_point() << '\n';
}
This code always outputs ", ." regardless of locale.
Right now the only way to extract std::numpunct information is to format an arbitrary number to a string and extract its, say, second and sixth character, and that's not a very efficient implementation.
I would suggest creating a std::numpunct subclass in icu/numeric.cpp that extracts that information from the icu::DecimalFormatSymbols class using getSymbol