Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for a snapshot of the master branch, built from commit 5002c2d6a2.
PrevUpHomeNext

CharSet

A CharSet is a unary predicate which is invocable with this equivalent signature:

bool( char ch ) const noexcept;

The predicate returns true if ch is a member of the set, or false otherwise.

Related Identifiers

is_charset, find_if, find_if_not.

Requirements

In this table:

Table 1.10. Valid expressions

Expression

Type

Semantics, Pre/Post-conditions

t(c)

bool

This function returns true if c is a member of the character set, otherwise it returns false.

t.find_if(first,last)

char const*

This optional member function examines the valid range of characters in [first, last) and returns a pointer to the first occurrence of a character which is in the set, or returns last if no such character.

The implementation of find_if will call this function if provided by the character set, allowing optimized or otherwise performant implementations to be developed. If this member function is not provided, a default implementation is used which calls operator().

t.find_if_not(first,last)

char const*

This optional member function examines the valid range of characters in [first, last) and returns a pointer to the first occurrence of a character which is not in the set, or returns last if no such character.

The implementation of find_if_not will call this function if provided by the character set, allowing optimized or otherwise performant implementations to be developed. If this member function is not provided, a default implementation is used which calls operator().


Exemplar

For best results, it is suggested that all constructors and member functions for character sets be marked constexpr.

struct CharSet
{
    bool operator()( char c ) const noexcept;

    // These are both optional. If either or both are left
    // unspecified, a default implementation will be used.
    //
    char const* find_if( char const* first, char const* last ) const noexcept;
    char const* find_if_not( char const* first, char const* last ) const noexcept;
};
Models

PrevUpHomeNext