背景
需要遍历整个参数
demo
#include <iostream>
#include <array>
#include <type_traits>
#include <tuple>
int num = 0;
class A;
class B;
class C;
class D;
template <bool end, size_t I, typename... Type>
struct Traversal;
template <size_t I, typename... Types>
struct Traversal<false, I, Types...>
{
using CURRENT_TYPE = typename std::tuple_element<I, std::tuple<Types...>>::type;
void operator()(string name ) const
{
//using T = typename CURRENT_TYPE ::ELEMENT_TYPE;
num++; //do something with name, CURRENT_TYPE
constexpr auto size = std::tuple_size<std::tuple<Types...>>::value;
Traversal<I + 1 == size, I + 1, Types...> func;
func();
}
};
template <size_t I, typename... Type>
struct Traversal<true, I, Type...> {
void operator()(string name ) const {}
};
int main()
{
Traversal<false, 0, A, B ,C, D > a;
string name = "hello";
a( name );
std::cout<<num<<std::endl;
}