Namespaces
Variants

std::experimental::ranges:: tagged

From ko.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)