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である場合、不適格(ill-formed)となります。
目次 |
パラメータ
| loc | - | クエリするロケールオブジェクト |
戻り値
ロケール
loc
にファセット
Facet
がインストールされている場合
true
を返し、それ以外の場合
false
を返します。
注記
std::has_facet
は、
Facet
が
ここ
に示されている標準ファセットの1つである場合、すべてのロケール
loc
に対して
true
を返さなければならない。
例
#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修飾は不可 |
関連項目
|
文化的差異をカプセル化する多態的ファセットの集合
(クラス) |
|
|
ロケールからファセットを取得する
(関数テンプレート) |