Всем привет,
Не получается создать массив указателей на темплейтные ф-ции
Для упрощения кода хочу сделать следующее:
Сгенерировать 8 простых ф-ций и заполнить массив или вектор указателями на них:
typedef int ( t_func ) (void*);
t_trc * ptrs [8];
template <int n> int func (void * param){
return n;
};
8 функ. я делаю просто так:
template int func <0>(void * param);
...
template int func <7>(void * param);
Теперь в идеале я хочу сделать так:
ptrs [0] = &func <0>;
Но тут много ошибок сразу..
cannot allocate an array of constant size 0
missing type specifier — int assumed. Note: C++ does not support default-int
redefinition; different type modifiers
ну и так далее.
Может тут лямбды какие нужны ? У меня VS 2008
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Не получается создать массив указателей на темплейтные ф-ции
KA>Может тут лямбды какие нужны ? У меня VS 2008
У меня на VS2008 даже без explicit instantiations работает.
#include "stdafx.h"
#include <iostream>
template <int n> int func (void * param)
{
std::cout << n << std::endl;
return n;
};
typedef int ( t_func ) (void*);
t_func * ptrs [8];
int main()
{
ptrs[0] = &func<0>;
ptrs[1] = &func<3>;
(ptrs[0])(0); // prints 0
(ptrs[1])(0); // prints 3
}