Namespaces
Variants

std::experimental::ranges:: tagged

From cppreference.net
template < class Base, TagSpecifier ... Tags >

requires sizeof... ( Tags ) <= std:: tuple_size < Base > :: value

struct tagged ;
(ranges TS)

클래스 템플릿 tagged 는 튜플과 유사한 클래스 타입 Base 를 공개적으로 상속받아, 태그 지정자 Tags... 로 지정된 명명된 접근자 집합으로 확장합니다. 태그는 순서대로 적용됩니다: Tags... 의 i번째 태그 지정자는 튜플의 i번째 요소에 대응합니다.

Tags... 내의 태그 지정자는 고유해야 합니다. 그렇지 않을 경우 동작은 정의되지 않습니다.

tagged 인스턴스를 Base 가 아닌 다른 베이스 클래스 포인터를 통해 삭제하는 것은 불가능합니다.

목차

멤버 함수

tagged 객체를 생성합니다
(public member function)
tagged 객체를 할당합니다
(public member function)
tagged 객체의 내용을 교환합니다
(public member function)

명명된 요소 접근자

Tags... 에서 N -번째 태그 지정자에 해당하는 요소 이름이 name 인 경우, tagged 는 다음과 같이 name 이라는 접근자를 제공합니다:

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)); }

비멤버 함수

tagged 객체에 대한 swap 특수화
(함수)

튜플 방식 접근

tagged 의 크기를 구함
(클래스 템플릿 특수화)
tagged 요소들의 타입을 구함
(클래스 템플릿 특수화)

참고 항목

타입이 태그 지정자임을 명시함
(concept)
태그가 지정된 std::pair 의 앨리어스 템플릿
(alias template)
tagged_pair 생성을 위한 편의 함수
(function template)
태그가 지정된 std::tuple 의 앨리어스 템플릿
(alias template)
tagged_tuple 생성을 위한 편의 함수
(function template)
ranges::tagged 와 함께 사용하기 위한 태그 지정자들
(class)