std::experimental::ranges:: tagged
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:
constexpr decltype(auto) name() & { return std::get<N>(*this); } constexpr decltype(auto) name() const & { return std::get<N>(*this); } constexpr decltype(auto) name() && { return std::get<N>(std::move(*this)); }
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) |