concepts.qbk

来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 334 行

QBK
334
字号
[/ / Copyright (c) 2008 Eric Niebler / / Distributed under the Boost Software License, Version 1.0. (See accompanying / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /][section Concepts][h2 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 defaultconstructor, copy constructor, assignment operator, and destructor.  In additionthe following requirements must be met for objects; `c` of type `CharT`, `c1` and `c2` oftype `CharT const`, and `i` of type `int`:[table 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.]    ]][h2 Traits Requirements]In the following table `X` denotes a traits class defining types and functionsfor the character container type `CharT`; `u` is an object of type `X`; `v` is anobject 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 oftype `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 Traits Requirements    [        [            [*Expression]        ]        [            [*Return type]        ]        [            [*Assertion / Note\n                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`.\n                \[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`.        ]    ]][h2 Acknowledgements]This section is adapted from the equivalent page in the _regexpp_ documentation and from the_proposal_ to add regular expressions to the Standard Library.[endsect]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?