请考虑以下代码:
template<typename T>
bool function1(T some_var) { return true; }
template <typename T>
bool (*function2())(T) {
return function1<T>;
}
void function3( bool(*input_function)(char) ) {}
Run Code Online (Sandbox Code Playgroud)
如果我打电话
function3(function2<char>());
Run Code Online (Sandbox Code Playgroud)
没关系.但是,如果我打电话
function3(function2());
Run Code Online (Sandbox Code Playgroud)
编译器给出的错误是它无法推导出模板的参数.
请问,你可以建议(提出一个想法)如何重写function1和/或function2(可能,基本上是用类重写)来使它好吗?
*添加*
我正在尝试做一些简单的事情,比如Boost.LambdaLib中的lambda表达式(可能是,我的方法不对):
sort(some_vector.begin(), some_vector.end(), _1 < _2)
Run Code Online (Sandbox Code Playgroud)
我这样做了:
template<typename T>
bool my_func_greater (const T& a, const T& b) {
return a > b;
}
template<typename T>
bool my_func_lesser (const T& a, const T& b) {
return b > a;
}
class my_comparing {
public:
int value;
my_comparing(int value) : value(value) …Run Code Online (Sandbox Code Playgroud)