25 Localization library [localization]

25.3 Locales [locales]

25.3.1 Class locale [locale]

25.3.1.2 locale constructors and destructor [locale.cons]

locale() noexcept;

Default constructor: a snapshot of the current global locale.

Effects: Constructs a copy of the argument last passed to locale​::​global(locale&), if it has been called; else, the resulting facets have virtual function semantics identical to those of locale​::​classic(). [Note: This constructor is commonly used as the default value for arguments of functions that take a const locale& argument. end note]

locale(const locale& other) noexcept;

Effects: Constructs a locale which is a copy of other.

explicit locale(const char* std_name);

Effects: Constructs a locale using standard C locale names, e.g., "POSIX". The resulting locale implements semantics defined to be associated with that name.

Throws: runtime_­error if the argument is not valid, or is null.

Remarks: The set of valid string argument values is "C", "", and any implementation-defined values.

explicit locale(const string& std_name);

Effects: The same as locale(std_­name.c_­str()).

locale(const locale& other, const char* std_name, category);

Effects: Constructs a locale as a copy of other except for the facets identified by the category argument, which instead implement the same semantics as locale(std_­name).

Throws: runtime_­error if the argument is not valid, or is null.

Remarks: The locale has a name if and only if other has a name.

locale(const locale& other, const string& std_name, category cat);

Effects: The same as locale(other, std_­name.c_­str(), cat).

template <class Facet> locale(const locale& other, Facet* f);

Effects: Constructs a locale incorporating all facets from the first argument except that of type Facet, and installs the second argument as the remaining facet. If f is null, the resulting object is a copy of other.

Remarks: The resulting locale has no name.

locale(const locale& other, const locale& one, category cats);

Effects: Constructs a locale incorporating all facets from the first argument except those that implement cats, which are instead incorporated from the second argument.

Remarks: The resulting locale has a name if and only if the first two arguments have names.

const locale& operator=(const locale& other) noexcept;

Effects: Creates a copy of other, replacing the current value.

Returns: *this.

~locale();

A non-virtual destructor that throws no exceptions.