std::experimental::ranges::tagged
From cppreference.com
< 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:
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) |