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 не является facet или если это volatile-квалифицированный facet.
Содержание |
Параметры
| 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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 436 | C++98 |
it was unclear whether
Facet
can be cv-qualified
|
it can be const-qualified, but not volatile-qualified |
Смотрите также
|
набор полиморфных фасадов, инкапсулирующих культурные различия
(класс) |
|
|
получает фасад из локали
(шаблон функции) |