< cpp‎ | locale‎ | locale
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]