Если у меня есть два аргумента varadic template, A
и B
, как я могу обеспечить во время компиляции, что типы всех членов A
также являются типами подмножества B
(в том же порядке)?
Упрощенный пример:
template<typename...A>
struct Foo {
template<typename...B>
static void bar()
{
}
}
...
Foo<Apple, Orange>:: template bar<Apple, Orange, Grape>(); // this compiles
Foo<Apple, Orange>:: template bar<Orange, Grape>(); // this doesn't