Шаблоны с переменным числом аргументов

 
0
 
C++
ava
Ivan. | 13.12.2016, 14:41
Здравствуйте коллеги.
Хочу немного заморочить голову. Представьте, что есть такой шаблонный класс:

template<class... T>
struct Q;
//И его специализация
template<template<int> class... T, int v>
struct Q < T<v>... > {};

То есть класс Q принимает переменное число различных шаблонных типов имеющих одинаковую структуру шаблона T<int> с одинаковым v

например:

Q< T1<1>, T2<1>, T1<1> > q;

А если нам нужно принять различные типы T с разными v:

template<template<int> class... T, int... v>
struct Q < T<v>... > {
    int list[sizeof...(v)] = {v...};
};
Удивительно, но получается, что для каждого T есть свой v, который можно пощупать:

Q< T1<1>, T2<2>, T1<3> > q;
list будет содержать значения 1, 2, 3.

Следующий вариант, где каждый тип T основан на нескольких аргументах:

template<template<int...> class... T, int... v>
struct Q < T<v...>... > {
    int list[sizeof...(v)] = {v...};
};
Q< T1<1, 2, 3>, T2<1, 2, 3>, T1<1, 2, 3> > q;
Здесь T разные, но списки v в них одинаковые
list будет содержать значения 1, 2, 3

А теперь главный вопрос, как сделать специализацию, где для каждого T будет свой список v?

template<template<int...> class... T, int ...(...v)>
struct Q < T<v...>... > {};

К сожалению компилятор ругается
Kommentare (0)

Kommentare werden nicht hinzugefügt

Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  Ivan.
advanced
Absenden