我想知道是否可以将模板函数(或其他函数)作为参数传递给不是模板的第二个函数。
在Google上搜索只能得到有关相反情况的信息(将函数作为模板参数传递)
我找到的唯一相关页面是http://www.beta.microsoft.com/VisualStudio/feedbackdetail/view/947754/compiler-error-on-passing-template-function-as-an-argument-to-a-function-with-ellipsis(并没有什么帮助)
我期望得到类似如下的内容:
template<class N>void print(A input){cout << input;}
void execute(int input, template<class N>void func(N)){func(input)}
然后稍后调用
execute(1,print);
那么,这可以完成吗?还是要为execute()定义另一个模板?
void print(auto x){std::cout<<x;}execute(1,print);
不能编译,有什么原因吗?无名函数被完全不同地处理吗? - Luke Naylorauto
,只能在 lambda 声明中使用。即使可以,它也与您原始示例中的模板版本相同。Lambda 能够工作的原因是它创建了一个类似于我在第二个代码补丁中向您展示的那样的函数对象。 - David G