---
name: "std::tr1::regex_traits"
section: "3cxx"
platform: "linux"
package: "libstdc++6-4.4-doc"
version: "4.4.5-8"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/std::tr1::regex_traits"
---

# std::tr1::regex\_traits(3cxx)

Describes aspects of a regular expression.

## NAME

std::tr1::regex\_traits -

Describes aspects of a regular expression.

## SYNOPSIS

### Public Types

typedef std::ctype\_base::mask **char\_class\_type**\
 typedef \_Ch\_type **char\_type**\
 typedef **std::locale** **locale\_type**\
 typedef **std::basic\_string**\< char\_type \> **string\_type**\

### Public Member Functions

**locale\_type** **getloc** () const \
 **locale\_type** **imbue** (**locale\_type** \_\_loc)\
 bool **isctype** (\_Ch\_type \_\_c, char\_class\_type \_\_f) const \
 template\<typename \_Fwd\_iter \> char\_class\_type **lookup\_classname** (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const \
 template\<typename \_Fwd\_iter \> **string\_type** **lookup\_collatename** (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const \
 **regex\_traits** ()\
 template\<typename \_Fwd\_iter \> **string\_type** **transform** (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const \
 template\<typename \_Fwd\_iter \> **string\_type** **transform\_primary** (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const \
 char\_type **translate** (char\_type \_\_c) const \
 char\_type **translate\_nocase** (char\_type \_\_c) const \
 int **value** (\_Ch\_type \_\_ch, int \_\_radix) const \

### Static Public Member Functions

static std::size\_t **length** (const char\_type \*\_\_p)\

### Protected Attributes

**locale\_type** **\_M\_locale**\

## Detailed Description

### template\<typename \_Ch\_type\> struct std::tr1::regex\_traits\< \_Ch\_type \>

Describes aspects of a regular expression.

A regular expression traits class that satisfies the requirements of **tr1** section \[7.2\].

The class regex is parameterized around a set of related types and functions used to complete the definition of its semantics. This class satisfies the requirements of such a traits class.

Definition at line 432 of file tr1\_impl/regex.

## Constructor & Destructor Documentation

### template\<typename \_Ch\_type \> std::tr1::regex\_traits\< \_Ch\_type \>::regex\_traits ()` [inline]`

Constructs a default traits object.

Definition at line 444 of file tr1\_impl/regex.

## Member Function Documentation

### template\<typename \_Ch\_type \> locale\_type std::tr1::regex\_traits\< \_Ch\_type \>::getloc () const` [inline]`

Gets a copy of the current locale in use by the **regex\_traits** object.

Definition at line 644 of file tr1\_impl/regex.

### template\<typename \_Ch\_type \> locale\_type std::tr1::regex\_traits\< \_Ch\_type \>::imbue (locale\_type \_\_loc)` [inline]`

Imbues the **regex\_traits** object with a copy of a new locale. **Parameters:**

*loc* A locale.

**Returns:**

a copy of the previous locale in use by the **regex\_traits** object.

**Note:**

Calling imbue with a different locale than the one currently in use invalidates all cached data held by \*this.

Definition at line 633 of file tr1\_impl/regex.

### template\<typename \_Ch\_type \> static std::size\_t std::tr1::regex\_traits\< \_Ch\_type \>::length (const char\_type \* \_\_p)` [inline, static]`

Gives the length of a C-style string starting at `__p`. **Parameters:**

*\_\_p* a pointer to the start of a character sequence.

**Returns:**

the number of characters between `*__p` and the first default-initialized value of type `char_type`. In other words, uses the C-string algorithm for determining the length of a sequence of characters.

Definition at line 458 of file tr1\_impl/regex.

### template\<typename \_Ch\_type \> template\<typename \_Fwd\_iter \> char\_class\_type std::tr1::regex\_traits\< \_Ch\_type \>::lookup\_classname (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const

Maps one or more characters to a named character classification. **Parameters:**

*first* beginning of the character sequence. \
 *last* one-past-the-end of the character sequence.

**Returns:**

an unspecified value that represents the character classification named by the character sequence designated by the iterator range \[first, last). The value returned shall be independent of the case of the characters in the character sequence. If the name is not recognized then returns a value that compares equal to 0.

At least the following names (or their wide-character equivalent) are supported.

- •

  d

- •

  w

- •

  s

- •

  alnum

- •

  alpha

- •

  blank

- •

  cntrl

- •

  digit

- •

  graph

- •

  lower

- •

  print

- •

  punct

- •

  space

- •

  upper

- •

  xdigit

**Todo**

Implement this function.

Referenced by std::tr1::regex\_traits\< \_Ch\_type \>::isctype().

### template\<typename \_Ch\_type \> template\<typename \_Fwd\_iter \> string\_type std::tr1::regex\_traits\< \_Ch\_type \>::lookup\_collatename (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const

Gets a collation element by name. **Parameters:**

*first* beginning of the collation element name. \
 *last* one-past-the-end of the collation element name.

**Returns:**

a sequence of one or more characters that represents the collating element consisting of the character sequence designated by the iterator range \[first, last). Returns an empty string if the character sequence is not a valid collating element.

**Todo**

Implement this function.

### template\<typename \_Ch\_type \> template\<typename \_Fwd\_iter \> string\_type std::tr1::regex\_traits\< \_Ch\_type \>::transform (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const` [inline]`

Gets a sort key for a character sequence. **Parameters:**

*first* beginning of the character sequence. \
 *last* one-past-the-end of the character sequence.

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).

What this really does is provide a more efficient way to compare a string to multiple other strings in locales with fancy collation rules and equivalence classes.

**Returns:**

a locale-specific sort key equivalent to the input range.

**Exceptions:**

**std::bad\_cast if the current locale does not have a collate facet.**

**Definition at line 511 of file tr1\_impl/regex.**

**References std::basic\_string\< \_CharT, \_Traits, \_Alloc \>::data(), std::basic\_string\< \_CharT, \_Traits, \_Alloc \>::size(), std::collate\< \_CharT \>::transform(), and std::use\_facet().**

### template\<typename \_Ch\_type \> template\<typename \_Fwd\_iter \> string\_type std::tr1::regex\_traits\< \_Ch\_type \>::transform\_primary (\_Fwd\_iter \_\_first, \_Fwd\_iter \_\_last) const

**Dunno. Parameters:**

*first* **beginning of the character sequence.** \
 *last* **one-past-the-end of the character sequence.**

**Effects: if typeid(use\_facet\<collate\<\_Ch\_type\> \>) == typeid(collate\_byname\<\_Ch\_type\>) and the form of the sort key returned by collate\_byname\<\_Ch\_type\>::transform(first, last) is known and can be converted into a primary sort key then returns that key, otherwise returns an empty string. WTF??**

**Todo**

**Implement this function.**

### template\<typename \_Ch\_type \> char\_type std::tr1::regex\_traits\< \_Ch\_type \>::translate (char\_type \_\_c) const` [inline]`

**Performs the identity translation. Parameters:**

*c* **A character to the locale-specific character set.**

**Returns:**

**c.**

**Definition at line 469 of file tr1\_impl/regex.**

### template\<typename \_Ch\_type \> char\_type std::tr1::regex\_traits\< \_Ch\_type \>::translate\_nocase (char\_type \_\_c) const` [inline]`

**Translates a character into a case-insensitive equivalent. Parameters:**

*c* **A character to the locale-specific character set.**

**Returns:**

**the locale-specific lower-case equivalent of c.**

**Exceptions:**

**std::bad\_cast if the imbued locale does not support the ctype facet.**

**Definition at line 482 of file tr1\_impl/regex.**

**References std::tolower().**

## Author

**Generated automatically by Doxygen for libstdc++ from the source code.**
