# std::locale::id

< cpp‎ | locale‎ | locale

定义于头文件 `<locale>` |  |
class locale::id; |  |

类 std::locale::id 提供本地环境片面的实现限定标识。每个导出自 std::locale::facet 的类都必须拥有名为 `id` 的 std::locale::id 类型公开静态成员，而每个 std::locale 对象维护其所实装的 facet 列表，以其 `id` 索引。

拥有相同 `id` 的 facet 属于同一平面类别，并且在添加到 locale 对象时彼此替换。

### 成员函数

(构造函数) | 构造新的 id (公开成员函数)
operator= | 复制赋值运算符被删除 (公开成员函数)

### 示例

下列代码展示如何构造最小的定制 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<myfacet>(myloc) returns " << std::boolalpha
                  << std::has_facet<myfacet>(myloc) << '\n';
    }

输出：

    has_facet<myfacet>(myloc) returns true

### 参阅

facet | 所有平面分类的分类：任何分类的每个 facet 都从此类型导出 (类)