コンセプト
charT の要件
basic_regex
テンプレートクラスのテンプレート引数で使用する型 charT
は、自明なデフォルトコンストラクタ、コピーコンストラクタ、代入演算子およびデストラクタを持たなければならない。加えてオブジェクトについては以下の要件を満足しなければならない。以下の表では charT
型の c
、charT const
型の c1
および c2
、int
型の i
を用いる。
式 |
戻り値の型 |
表明、注釈、事前・事後条件 |
---|---|---|
|
|
デフォルトコンストラクタ(自明でなければならない)。 |
|
|
コピーコンストラクタ(自明でなければならない)。 |
c1 = c2 |
|
代入演算子(自明でなければならない)。 |
c1 == c2 |
|
|
c1 != c2 |
|
|
c1 < c2 |
|
|
c1 > c2 |
|
|
c1 <= c2 |
|
|
c1 >= c2 |
|
|
|
|
注意:特性クラスが最小限の標準インターフェイスではなく Boost 固有のフルインターフェイスをサポートする場合は、 |
|
|
|
特性クラスの要件
basic_regex
の traits
テンプレート引数に対しては要件のセットが 2 つある。最小限のインターフェイス(正規表現標準草案の一部)と、オプションの Boost 固有強化インターフェイスである。
最小限の要件
以下の表において X
は charT
型の文字コンテナについて型と関数を定義する特性クラスを表す。u
は X
型のオブジェクト、v
は const X
型のオブジェクト、p
は const charT*
型の値、I1
および I2
は入力イテレータ、c
は const charT
型の値、s
は型 X::string_type
のオブジェクト、cs
は型 const X::string_type
のオブジェクト、b
は bool
型の値、I
は int
型の値、F1
および F2
は const charT*
型の値、loc
は X::locale_type
型のオブジェクトである。
式 |
戻り値の型 |
表明、注釈、事前・事後条件 |
---|---|---|
X::char_type |
|
|
X::size_type |
- |
|
X::string_type |
|
なし。 |
X::locale_type |
(実装定義) |
特性クラスが使用するロカールを表現する、コピー構築可能な型。 |
X::char_class_type |
(実装定義) |
個々の文字分類(文字クラス)を表現するビットマスク型。この型の複数の値をビット和すると別の有効な値を得る。 |
X::length(p) |
|
p[i] == 0 である最小の |
v.translate(c) |
|
|
v.translate_nocase(c) |
|
大文字小文字を区別せずに比較した場合に |
v.transform(F1, F2) |
|
イテレータ範囲 [F1, F2) が示す文字シーケンスのソートキーを返す。文字シーケンス [G1, G2) が文字シーケンス [H1, H2) の前にソートされる場合に v.transform(G1, G2) < v.transform(H1, H2) とならなければならない。 |
v.transform_primary(F1, F2) |
|
イテレータ範囲 [F1, F2) が示す文字シーケンスのソートキーを返す。大文字小文字を区別せずにソートして文字シーケンス [G1, G2) が文字シーケンス [H1, H2) の前に現れる場合に v.transform_primary(G1, G2) < v.transform_primary(H1, H2) とならなければならない。 |
v.lookup_classname(F1, F2) |
|
イテレータ範囲 [F1, F2) が示す文字シーケンスを、 |
v.lookup_collatename(F1, F2) |
|
イテレータ範囲 [F1, F2) が示す文字シーケンスが構成する照合要素を表す文字シーケンスを返す。文字シーケンスが正しい照合要素でなければ空文字列を返す。 |
v.isctype(c, v.lookup_classname(F1, F2)) |
|
文字 |
v.value(c, I) |
|
文字 |
u.imbue(loc) |
|
ロカール |
v.getloc() |
|
|
オプションの追加要件
以下の追加要件は厳密にはオプションである。しかしながら basic_regex
でこれらの追加インターフェイスを利用するには、以下の要件をすべて満たさなければならない。basic_regex
はメンバ boost_extensions_tag
の有無を検出し、自身を適切に構成する。
式 |
結果 |
表明、注釈、事前・事後条件 |
---|---|---|
X::boost_extensions_tag |
型の指定はない。 |
与えられている場合、この表にある拡張がすべて与えられていなければならない。 |
v.syntax_type(c) |
|
正規表現文法における文字 |
v.escape_syntax_type(c) |
|
正規表現文法において、 |
v.translate(c, b) |
|
|
v.toi(I1, I2, I) |
|
I1 == I2 か *I1 が数字でなければ -1 を返す。それ以外の場合はシーケンス [I1, I2) に入力数値書式化処理を行い、結果を |
v.error_string(I) |
|
エラー状態 |
v.tolower(c) |
|
|
v.toupper(c) |
|
|
イテレータの要件
正規表現アルゴリズム(およびイテレータ)は、すべて双方向イテレータの要件を満たす。
- 1
I
の値は 8 、10 、16 のいずれかである。