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/w/cpp/locale/has_facet

Spec-Zone.ru

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