1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
template<template<int... Is> class A,int... Is>
struct rmli;
template<template<int I> class A,int I>
struct rmli<A<I>,I>
{
using type = A<>;
};
template <template<int I,int... Is> class A, int I,int... Is>
struct rmli<A<I,Is>,I,Is>
{
using type = typename concat<A<I>,I,typename rmli<A<Is...>,Is...>::type>::type;
};
template<template<int I1> class A,int I1,template<int I2> class A,int I2>
struct concat{ };
template<template<int... Is1> class A,int... Is1,template<int... Is2> class A, int... Is2>
struct concat<A<Is1...>,Is1...,A<Is2...>,Is2...>
{
using type = A<Is1...,Is2...>;
};
|