Получить decltype функции

Я хочу получить тип функции и создать ее std::vector. Например, у меня есть

int foo(int a[], int n) { return 1; }
int bar(int a[], int n) { return 2; }

и вектор таких функций будет:

std::vector< std::function<int(int[],int)> > v;

И вообще, decltype() будет лучше, например:

std::vector< decltype(foo) > v;

Однако, это приведет к ошибке компиляции.

Думаю, причина в том, что decltype() не может различить

int (*func)(int[], int)
std::function<int(int[], int)>

. Есть ли способ исправить это?

8
задан Jarod42 1 October 2015 в 14:03
поделиться