我想提供一个(模板化的)函数,其中包含一个函数-theh对象,其中给定的返回类型作为参数,理想情况下我希望能够在没有显式模板参数的情况下调用该函数。 / p>
到目前为止,我试过了:
template<A, B, F>
B some(A a, F f) { return f(a); }
template<A, B>
B some(A a, B (*f)(A)) { return some<A, B, B (*)(A)>(a, f); }
我有重载使模板args完全可驱动,至少对于函数指针。现在我似乎无法为std::unary_function
制作模板专精,因为它不包含operator()
成员,因此不适合F
。
此外,似乎通常没有任何算子解决方案,因为我无法通知编译器我希望F有B operator()(A)
。或者这种鸭子打字可能吗?
答案 0 :(得分:0)
std::unary_function
只是其他类的基础,应提供operator()
。根本不应该有unary_function
的实例,所以我看不出问题 - 第一个采用3个模板参数的函数是这类问题的官方解决方案。
编辑:如果你想在没有显式模板参数的情况下调用该函数,而不是使用std::result_of
(C ++ 11)或boost::result_of
。