Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Concepts

CharT requirements

If type BidiIterT is used as a template argument to basic_regex<>, then CharT is iterator_traits<BidiIterT>::value_type. Type CharT must have a trivial default constructor, copy constructor, assignment operator, and destructor. In addition the following requirements must be met for objects; c of type CharT, c1 and c2 of type CharT const, and i of type int:

Table 1.14. CharT Requirements

Expression

Return type

Assertion / Note / Pre- / Post-condition

CharT c

CharT

Default constructor (must be trivial).

CharT c(c1)

CharT

Copy constructor (must be trivial).

c1 = c2

CharT

Assignment operator (must be trivial).

c1 == c2

bool

true if c1 has the same value as c2.

c1 != c2

bool

true if c1 and c2 are not equal.

c1 < c2

bool

true if the value of c1 is less than c2.

c1 > c2

bool

true if the value of c1 is greater than c2.

c1 <= c2

bool

true if c1 is less than or equal to c2.

c1 >= c2

bool

true if c1 is greater than or equal to c2.

intmax_t i = c1

int

CharT must be convertible to an integral type.

CharT c(i);

CharT

CharT must be constructable from an integral type.


Traits Requirements

In the following table X denotes a traits class defining types and functions for the character container type CharT; u is an object of type X; v is an object of type const X; p is a value of type const CharT*; I1 and I2 are Input Iterators; c is a value of type const CharT; s is an object of type X::string_type; cs is an object of type const X::string_type; b is a value of type bool; i is a value of type int; F1 and F2 are values of type const CharT*; loc is an object of type X::locale_type; and ch is an object of const char.

Table 1.15. Traits Requirements

Expression

Return type

Assertion / Note
Pre / Post condition

X::char_type

CharT

The character container type used in the implementation of class template basic_regex<>.

X::string_type

std::basic_string<CharT> or std::vector<CharT>

X::locale_type

Implementation defined

A copy constructible type that represents the locale used by the traits class.

X::char_class_type

Implementation defined

A bitmask type representing a particular character classification. Multiple values of this type can be bitwise-or'ed together to obtain a new valid value.

X::hash(c)

unsigned char

Yields a value between 0 and UCHAR_MAX inclusive.

v.widen(ch)

CharT

Widens the specified char and returns the resulting CharT.

v.in_range(r1, r2, c)

bool

For any characters r1 and r2, returns true if r1 <= c && c <= r2. Requires that r1 <= r2.

v.in_range_nocase(r1, r2, c)

bool

For characters r1 and r2, returns true if there is some character d for which v.translate_nocase(d) == v.translate_nocase(c) and r1 <= d && d <= r2. Requires that r1 <= r2.

v.translate(c)

X::char_type

Returns a character such that for any character d that is to be considered equivalent to c then v.translate(c) == v.translate(d).

v.translate_nocase(c)

X::char_type

For all characters C that are to be considered equivalent to c when comparisons are to be performed without regard to case, then v.translate_nocase(c) == v.translate_nocase(C).

v.transform(F1, F2)

X::string_type

Returns a sort key for the character sequence designated by the iterator range [F1, F2) such that if the character sequence [G1, G2) sorts before the character sequence [H1, H2) then v.transform(G1, G2) < v.transform(H1, H2).

v.transform_primary(F1, F2)

X::string_type

Returns a sort key for the character sequence designated by the iterator range [F1, F2) such that if the character sequence [G1, G2) sorts before the character sequence [H1, H2) when character case is not considered then v.transform_primary(G1, G2) < v.transform_primary(H1, H2).

v.lookup_classname(F1, F2)

X::char_class_type

Converts the character sequence designated by the iterator range [F1,F2) into a bitmask type that can subsequently be passed to isctype. Values returned from lookup_classname can be safely bitwise or'ed together. Returns 0 if the character sequence is not the name of a character class recognized by X. The value returned shall be independent of the case of the characters in the sequence.

v.lookup_collatename(F1, F2)

X::string_type

Returns a sequence of characters that represents the collating element consisting of the character sequence designated by the iterator range [F1, F2). Returns an empty string if the character sequence is not a valid collating element.

v.isctype(c, v.lookup_classname(F1, F2))

bool

Returns true if character c is a member of the character class designated by the iterator range [F1, F2), false otherwise.

v.value(c, i)

int

Returns the value represented by the digit c in base i if the character c is a valid digit in base i; otherwise returns -1.
[Note: the value of i will only be 8, 10, or 16. -end note]

u.imbue(loc)

X::locale_type

Imbues u with the locale loc, returns the previous locale used by u.

v.getloc()

X::locale_type

Returns the current locale used by v.


Acknowledgements

This section is adapted from the equivalent page in the Boost.Regex documentation and from the proposal to add regular expressions to the Standard Library.


PrevUpHomeNext