Spec-Zone.ru › C++

std::has_facet

Определён в заголовочном файле <locale>
template< class Facet >
bool has_facet( const locale& loc ) throw();
(до C++11)
template< class Facet >
bool has_facet( const locale& loc ) noexcept;
(начиная с C++11)

Проверяет, реализует ли локаль loc фасет Facet.

Программа некорректна, если Facet не является фасетом или является фасетом с квалификатором volatile.

Параметры

loc - объект локали для проверки

Возвращаемое значение

Возвращает true, если фасет Facet был установлен в локали loc, и false в противном случае.

Примечания

std::has_facet должен возвращать true для всех локалей loc, если Facet является одним из стандартных фасетов, приведённых здесь.

Пример

#include <iostream>
#include <locale>

// minimal custom facet
struct myfacet : public std::locale::facet
{
    static std::locale::id id;
};

std::locale::id myfacet::id;

int main()
{
    // loc is a "C" locale with myfacet added
    std::locale loc(std::locale::classic(), new myfacet);
    std::cout << std::boolalpha
              << "Can loc classify chars? "
              << std::has_facet<std::ctype<char>>(loc) << '\n'
              << "Can loc classify char32_t? "
              << std::has_facet<std::ctype<char32_t>>(loc) << '\n'
              << "Does loc implement myfacet? "
              << std::has_facet<myfacet>(loc) << '\n';
}

Вывод:

Can loc classify chars? true
Can loc classify char32_t? false
Does loc implement myfacet? true

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

DR Применяется к Опубликованное поведение Правильное поведение
LWG 436 C++98 не было ясно, может ли Facet иметь квалификаторы cv может иметь квалификатор const, но не volatile

См. также

locale
набор полиморфных фасетов, инкапсулирующих культурные различия
(класс)
use_facet
получает фасет из локали
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/locale/has_facet

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API