std::experimental::ranges::tagged
< cpp | experimental | ranges
|
Defined in header
<experimental/ranges/utility> |
||
|
template< class Base, TagSpecifier... Tags >
requires sizeof...(Tags) <= std::tuple_size<Base>::value |
(ranges TS) | |
The class template tagged augments a tuple-like class type Base, which it publicly derives from, with a set of named accessors specified by the tag specifiers Tags.... The tags are applied in order: the i-th tag specifier in Tags... correspond to the i-th element of the tuple.
The tag specifiers in Tags... shall be unique. Otherwise, the behavior is undefined.
It is not possible to delete an instance of tagged through a pointer to any base other than Base.
Member functions
construct a tagged object(public member function) |
|
assigns a tagged object(public member function) |
|
swaps the contents of two tagged objects(public member function) |
Named element accessors
For the N-th tag specifier in Tags... whose corresponding element name is name, tagged provides accessors named name as follows:
Non-member functions
specializes swap for tagged objects(function) |
Tuple-like access
obtains the size of a tagged(class template specialization) |
|
obtains the types of the elements of a tagged(class template specialization) |
See also
| specifies that a type is a tag specifier (concept) |
|
| alias template for a tagged std::pair (alias template) |
|
convenience function for creating a tagged_pair(function template) |
|
| alias template for a tagged std::tuple (alias template) |
|
convenience function for creating a tagged_tuple(function template) |
|
| tag specifiers for use with ranges::tagged (class) |