Public Types | List of all members
util::details::extract_to_tuple_type_impl< TargetClass, Extractor, Tuple, I, N, T > Struct Template Reference

Implementation for extract_to_tuple_type. More...

#include <TupleLookupByTag.h>

Public Types

using type = typename extract_to_tuple_type_impl< TargetClass, Extractor, Tuple,(I+1), N, T..., typename Extractor< std::tuple_element_t< I, Tuple >>::type >::type
 

Detailed Description

template<template< typename... > class TargetClass, template< typename T, typename... > class Extractor, typename Tuple, std::size_t I, std::size_t N, typename... T>
struct util::details::extract_to_tuple_type_impl< TargetClass, Extractor, Tuple, I, N, T >

Implementation for extract_to_tuple_type.

Template Parameters
TargetClassas in extract_to_tuple_type
Extractoras in extract_to_tuple_type
Tupleas in extract_to_tuple_type
Iindex of the type being extracted at this iteration
Ntotal number of types to be extracted
Ttypes already extracted

The recursive implementation adds the type extracted from the I-th Tuple element to the list of T.

The total number of iterations needs to be passed as argument since the end-of-iteration specialization needs to define I as std::tuple_size_v<Tuple>, but C++ (at least up to C++14) does not allow for a typed template argument to be so complicate (). This may change in the future,

Definition at line 1027 of file TupleLookupByTag.h.

Member Typedef Documentation

template<template< typename... > class TargetClass, template< typename T, typename... > class Extractor, typename Tuple , std::size_t I, std::size_t N, typename... T>
using util::details::extract_to_tuple_type_impl< TargetClass, Extractor, Tuple, I, N, T >::type = typename extract_to_tuple_type_impl<TargetClass, Extractor, Tuple, (I + 1), N, T..., typename Extractor<std::tuple_element_t<I, Tuple>>::type>::type

Definition at line 1028 of file TupleLookupByTag.h.


The documentation for this struct was generated from the following file: