我有一个函子,我想自动推断返回类型。我怎样才能做到这一点?
template <typename _ScalarL, typename _ScalarR>
struct Multi
{
DEDUCEDTYPE operator()(_ScalarL input1, _ScalarR input2) const
{
return input1 * input2;
}
};
int main(){
Multi<int, double> mt;
mt(1,2.0);
}
如何自动获取
DEDUCEDTYPE
? 最佳答案
使用C++ 03 不能自动推断类型。如其他答案中所述,您可能必须手动创建自己的演绎特化知识。
对于 C++ 11 / C++ 14 :// For C++14, simply `auto` is enough
auto operator()(_ScalarL input1, _ScalarR input2) const
#if __cplusplus < 201402L
-> decltype(input1 * input2) // required for C++11
#endif