Namespaces
Variants

deduction guides for std::tuple

From cppreference.net
Utilities library
헤더 파일에 정의됨 <tuple>
template < class ... UTypes >
tuple ( UTypes... ) - > tuple < UTypes... > ;
(1) (C++17부터)
template < class T1, class T2 >
tuple ( std:: pair < T1, T2 > ) - > tuple < T1, T2 > ;
(2) (C++17부터)
template < class Alloc, class ... UTypes >
tuple ( std:: allocator_arg_t , Alloc, UTypes... ) - > tuple < UTypes... > ;
(3) (C++17부터)
template < class Alloc, class T1, class T2 >
tuple ( std:: allocator_arg_t , Alloc, std:: pair < T1, T2 > ) - > tuple < T1, T2 > ;
(4) (C++17부터)
template < class Alloc, class ... UTypes >
tuple ( std:: allocator_arg_t , Alloc, tuple < UTypes... > ) - > tuple < UTypes... > ;
(5) (C++17부터)

이러한 deduction guides 는 암시적 deduction guides가 놓치는 특수한 경우들, 특히 복사 불가능한 인수들과 배열에서 포인터로의 변환을 처리하기 위해 std::tuple 에 제공됩니다.

예제

#include <tuple>
int main()
{
    int a[2], b[3], c[4];
    std::tuple t1{a, b, c}; // 이 경우 명시적 deduction guide가 사용됨
}