Namespaces
Variants

std:: has_facet

From cppreference.net
Défini dans l'en-tête <locale>
template < class Facet >
bool has_facet ( const locale & loc ) throw ( ) ;
(jusqu'à C++11)
template < class Facet >
bool has_facet ( const locale & loc ) noexcept ;
(depuis C++11)

Vérifie si la locale loc implémente le facet Facet .

Le programme est mal formé si Facet n'est pas un facet ou s'il s'agit d'un facet qualifié volatile.

Table des matières

Paramètres

loc - l'objet de paramètres régionaux à interroger

Valeur de retour

Retourne true si le facet Facet a été installé dans la locale loc , false sinon.

Notes

std::has_facet doit renvoyer true pour tous les paramètres régionaux loc si Facet est l'une des facettes standard fournies ici .

Exemple

#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';
}

Sortie :

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

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 436 C++98 il n'était pas clair si Facet pouvait être qualifié cv il peut être qualifié const, mais pas volatile

Voir aussi

ensemble de facettes polymorphes qui encapsulent les différences culturelles
(classe)
obtient une facette d'une locale
(modèle de fonction)