std::locale::facet
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   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.
Member functions
|   constructs a new facet with specified reference count  (protected member function)  | |
|    operator=  | 
   the copy assignment operator is deleted   (protected member function)  | 
|    (destructor) [virtual]  | 
  the destructor is protected virtual  (virtual protected member function)  | 
Example
| This section is incomplete Reason: no example  | 
See also
|    the facet index type: each facet class must declare or inherit a public static member of this type  (class)  |