Search code examples
c++locale

What does an empty locale parameter mean?


I saw code that used a locale but didn't provide a name for it. I saw this several times actually and I'm not sure how it works.

auto& f = std::use_facet<std::ctype<wchar_t>>(std::locale());

I was wondering what it means to just use an empty locale constructor. I thought all locale names had to be specified.

For some context, here is where I found the code: http://en.cppreference.com/w/cpp/locale/ctype/toupper


Solution

  • http://www.cplusplus.com/reference/locale/locale/locale/

    The default constructor constructs a copy of the current global locale, which is the locale set by a previous call to locale::global, or locale::classic if locale::global has not been called.

    What is locale::classic?

    http://www.cplusplus.com/reference/locale/locale/classic/

    Returns the classic locale, which corresponds in semantics to the "C" locale (the default locale).

    What is the "C" locale?

    http://www.cplusplus.com/reference/clocale/

    The "C" locale is the minimal locale. It is a rather neutral locale which has the same settings across all systems and compilers, and therefore the exact results of a program using this locale are predictable. This is the locale used by default on all C programs.