【发布时间】:2018-09-26 01:10:59
【问题描述】:
所以在它最精炼的形式中,我有这样的事情发生,
template <class T>
bool f(const T &a, const T &b, std::function<bool(const T&, const T&)> func)
{
return func(a,b);
}
template <class T>
bool g(const T &a, const T &b)
{
return true;
}
但是任何尝试调用f(),使用任何东西,f('a', 'b', g),f(1, 2, g),总是导致“没有匹配的函数调用'f'”,无论我是否将变量作为常量引用传递或只是普通值或其他。我假设它无法推断出一些模板,但我不知道在哪里或为什么。
我承认,我一般对如何使用函数对象知之甚少,做这样的事情是否可能?
【问题讨论】:
-
你需要传入一个函数作为第三个参数。
-
... 并将缺少的
>放入您的参数列表中。仅此一项就会破坏编译。 -
对,对。我打字匆忙,这些都存在于我的实际代码中。
标签: c++ templates std-function template-argument-deduction