< cpp‎ | locale‎ | locale
Localizations library
Locales and facets
Facet category base classes
ctype facets
numeric facets
collate facets
time facets
monetary facets
messages facets
Character classification and conversion
Character classification
Code conversion facets
C locale
Text encoding identifications
Defined in header <locale>
class locale::facet;

std::locale::facet is the base class for facets. It provides a common base class so that locales could store pointers to the facets they implement in a single indexed container, and it abstracts support for facet reference counting.

Whenever a facet is added to a locale, the locale increments the reference count in the facet (through an implementation-specific mechanism). Whenever a locale is destructed or modified, it decrements the reference count in each facet it no longer implements. Whenever a facet's reference count becomes zero, the locale performs delete static_cast<std::locale::facet*>(f); where f is the pointer to the facet.


[edit] Facet class

A class is a facet if

static ::std::locale::id id;

[edit] Member functions

constructs a new facet with specified reference count
(protected member function)
the copy assignment operator is deleted
(protected member function)
the destructor is protected virtual
(virtual protected member function)

[edit] Example

[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 2694 C++98 the definition of 'facet' was removed by the resolution of LWG issue 436 added the definition back

[edit] See also

the facet index type: each facet class must declare or inherit a public static member of this type
(class) [edit]