##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::locale::id

From cppreference.com
< cpp‎ | locale‎ | locale

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 named `id` of type std::locale::id and each std::locale object maintains a list of facets it implements, indexed by their `id`s.

Facets with the same `id` belong to the same facet category and replace each other when added to a locale object.

### [edit] Member functions

(constructor) | 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.

Run this code

    #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<myfacet>(myloc) returns " << std::boolalpha
                  << std::has_facet<myfacet>(myloc) << '\n';
    }

Output:

    has_facet<myfacet>(myloc) returns true

### [edit] See also

facet | the base class for all facet categories: each facet of any category is derived from this type (class) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/locale/locale/id&oldid=88472"