我有一个函子,我想自动推断返回类型。我怎样才能做到这一点?

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

10-07 20:13