Я пытаюсь написать шаблон, который получает тип указателя функции в качестве аргумента шаблона и соответствующий указатель функции в качестве аргумента функции, поэтому в качестве простого примера я делаю это сейчас:
int myfunc(int a)
{ return a; }
template<typename T, typename Func> struct Test
{
typedef typeof(myfunc) Fun;
static T MyFunc(T val, Func f)
{
return f(val);
}
};
int main(void)
{
std::cout<<Test<int, typeof(myfunc)>::MyFunc(5, myfunc)<<std::endl;
}
Однако этот код мгновенно вылетает. Если я изменю тип f на Fun
, он будет работать отлично.
Так что я делаю не так и как мне заставить это работать?
Я использую Mingw под Windows Vista, если это поведение в случае, если это поведение зависит от компилятора.