1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| template<class...>
struct MyStruct;
template<class,class,class>
struct get_impl;
// 1
template<class T, class U, class... ArgT, class... ArgU>
struct get_impl<T, MyStruct<ArgT...>, MyStruct<U,ArgU...>>
: get_impl<T, MyStruct<ArgT...>, MyStruct<ArgU...>>
{ };
// 2
template<class T, class... ArgT, class... ArgU>
struct get_impl<T,MyStruct<ArgT...>, MyStruct<T,ArgU...>>
: get_impl<T, MyStruct<ArgT...,T>, MyStruct<ArgU...>>
{ };
// 3
template<class T, class... Arg>
struct get_impl<T, MyStruct<Arg...>, MyStruct<>>
{ using type = MyStruct<Arg...>; };
// 4
template<class T, class... Arg>
struct get_identical_params
: get_impl<T, MyStruct<T>, MyStruct<Arg...>>
{ }; |
Partager