std::locale::id
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header <locale>
   | 
||
|   class locale::id;  | 
||
The class std::locale::id provides implementation-specific identification of a locale facet. Each class derived from std::locale::facet must have a public static member of type std::locale::id and each std::locale object maintains a list of facets it implements, indexed by their ids.
Facets with the same id belong to the same facet category and replace each other when added to a locale object.
[edit] Member functions
|   constructs a new id  (public member function)  | |
|    operator=  | 
   copy assignment operator is deleted  (public member function)  | 
[edit] Example
The following example shows how to construct a minimal custom facet.
#include <iostream> #include <locale> struct myfacet : std::locale::facet { myfacet(std::size_t refs = 0) : facet(refs) {} static std::locale::id id; }; std::locale::id myfacet::id; int main() { std::locale myloc(std::locale(), new myfacet); std::cout << "has_facet<myloc, myfacet> returns " << std::boolalpha << std::has_facet<myfacet>(myloc) << '\n'; }
Output:
has_facet<myloc, myfacet> returns true
[edit] See also
|    the base class for all facet categories: each facet of any category is derived from this type   (class)  | |