Параметр функции в шаблоне переменной - PullRequest
0 голосов
/ 15 января 2019

Можно ли написать шаблонный шаблон с функциями в качестве параметра шаблона?

Тезисы являются действительными декларациями c ++

template <typename ...Types> class foo;

template <int func(int)>  class bar;

Можно ли сделать что-то вроде

template <int func(int)...> class foobar; 

Я пробовал много разных синтаксисов, таких как

template <int ...func(int)> class foobar; 

и ничего не компилируется (я использую gcc 8.1.0 с -std = c ++ 17)

1 Ответ

0 голосов
/ 15 января 2019

Синтаксис:

template <int (*...Fs)(int)> class foobar {};

, что позволяет

int f1(int);
int f2(int);

foobar<&f1, &f2, &f1> obj;

Использование псевдонима может помочь вам иметь более естественный синтаксис:

using f_int_int = int (*)(int);
template <f_int_int...Fs> class foobar {};

или даже (благодаря комментарию Якка):

template <typename T> using id_t = T;
template <id_t<int(*)(int)>...Fs> class foobar {};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...