C++ 名前付き要件: RegexTraits (C++11 以降)
From cppreference.com
RegexTraits は、std::basic_regex のテンプレート型パラメータとして使用される際に、指定された文字型に必要な操作を抽象化するトレイトクラスです。
[編集] 要件
以下を考えます。
- CharT、文字型
- X、型 CharT に対する RegexTraits 型
- u、型 X のオブジェクト
- v、型 const X のオブジェクト
- p、型 const CharT* の値
- I1, I2、入力イテレータ
- F1, F2、前方イテレータ
- c、型 const CharT の値
- s、型 X::string_type のオブジェクト
- cs、型 const X::string_type のオブジェクト
- b、型 bool の値
- I、型 int の値
- cl、型 X::char_class_type のオブジェクト
- loc、型 X::locale_type のオブジェクト
| 式 | 戻り値の型 | 意味 |
|---|---|---|
| X::char_type | CharT | 文字型を参照するために使用される。 |
| X::string_type | std::basic_string<CharT> | |
| X::locale_type | トレイトクラスによって使用されるロケールを表す、CopyConstructible な型。 | |
| X::char_class_type | 特定の文字分類を表す、BitmaskType 型。 | |
| X::length(p) | std::size_t | 戻り値:p[i] == 0 となる最小の i。計算量は i に対して線形。 |
| v.translate(c) | X::char_type | 戻り値:任意の文字 d に対して、c と等価であるとみなされる場合、v.translate(c) == v.translate(d) となるような文字。 |
| v.translate_nocase(c) | X::char_type | 戻り値:任意の文字 C に対して、大文字小文字を区別せずに c と等価であるとみなされる場合、v.translate_nocase(c) == v.translate_nocase(C) となるような文字。 |
| v.transform(F1, F2) | X::string_type | 戻り値:イテレータ範囲 [F1, F2) によって指定される文字シーケンスのソートキー。文字シーケンス [G1, G2) が文字シーケンス [H1, H2) より前にソートされる場合、v.transform(G1, G2) < v.transform(H1, H2) となる。 |
| v.transform_primary(F1, F2) | X::string_type | 戻り値:イテレータ範囲 [F1, F2) によって指定される文字シーケンスのソートキー。文字シーケンス [G1, G2) が文字シーケンス [H1, H2) より前に大文字小文字を区別せずにソートされる場合、v.transform_primary(G1, G2) < v.transform_primary(H1, H2) となる。 |
| v.lookup_collatename(F1, F2) | X::string_type | 戻り値
|
| v.lookup_classname(F1, F2, b) | X::char_class_type |
|
| v.isctype(c, cl) | bool | 戻り値:c が cl によって指定される文字クラスのいずれかのメンバーであるかどうか。 |
| v.value(c, I) | int | 戻り値
|
| u.imbue(loc) | X::locale_type |
|
| v.getloc() | X::locale_type | 戻り値:もしあれば、v によって使用されていた以前のロケール。 |
[編集] 標準ライブラリ
RegexTraits は、以下の標準ライブラリクラスによって満たされます。
| template<> class regex_traits<char>; template<> class regex_traits<wchar_t>; |
(C++11以降) (C++11以降) |
|