https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85732
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2018-05-10 Ever confirmed|0 |1 --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- It works fine for me with any version of GCC, including 6.4.0 Testing 'moneypunct' Facet: --> Setting locale 'pt_BR.utf8' Natl Currency Symbol = 'R$' Intl Currency Symbol = 'BRL ' Natl Positive Sign = '' Intl Positive Sign = '' Natl Positive Format = { sign, symbol, space, value } Intl Positive Format = { sign, symbol, space, value } Natl Negative Sign = '-' Natl Negative Format = { sign, symbol, space, value } Intl Negative Sign = '-' Intl Negative Format = { sign, symbol, space, value } Natl Decimal Point = ',' Intl Decimal Point = ',' Natl Thousands Separator = '.' Intl Thousands Separator = '.' Natl Fractional Digits = '2' Intl Fractional Digits = '2' Natl Grouping Length [0] = 3 digits Natl Grouping Length [1] = 3 digits Intl Grouping Length [0] = 3 digits Intl Grouping Length [1] = 3 digits Are you sure something else didn't change on your system at the same time? The C++ library just parses the locale definition data on your system, that data comes from glibc not from GCC.