Я хочу передать функцию шаблона в качестве аргумента функции шаблона.В функции meta_func_ok приведенного ниже кода успешно передан указатель на функцию в качестве аргумента функции шаблона.Но как шаблон, №
template < typename N > N
meta_func_ok( N( *f )( N ), N x ) {
return f( x );
}
template < typename F, typename N > N
meta_func_ng( F f, N x ) {
return f( x );
}
template < typename N > N
target_func( N x ) {
return x;
}
int main() {
meta_func_ok( target_func, 1 );
meta_func_ng( target_func, 1 ); // LINE 18
return 0;
}
Компиляция этого кода приводит к ошибке ниже.
ng.cpp: В функции 'int main ()': ng.cpp: 18:31: ошибка: нет соответствующей функции для вызова 'meta_func_ng (, int)' meta_func_ng (target_func, 1);^ ng.cpp: 7: 1: примечание: кандидат: шаблон N meta_func_ng (F, N) meta_func_ng (F f, N x) {^ ~~~~~~~~~~~ ng.cpp: 7: 1:примечание: ошибка вывода / замены аргумента шаблона: ng.cpp: 18: 31: примечание: не удалось вывести параметр шаблона 'F' meta_func_ng (target_func, 1);
Как это сделать?Заранее спасибо!