模板参数推导失败:将func指针传递给std :: function

时间:2018-01-30 19:47:20

标签: c++ c++11 templates lambda

在提供的示例中,foo无法推断T的类型 - 函数指针和lambda(注释掉),提供的类型或foo2一切正常。 什么阻止foo推断T型?有没有办法让它自动完成?

template<typename T>
void foo(std::function<T(const T&)> op) {
    std::cout << op(6) << std::endl;
}

void foo2(std::function<int(const int&)> op) {
    std::cout << op(6) << std::endl;
}

int bar(const int &x) {return 3 * x;}

int main() {
    //    foo(bar);
    //    foo([](const int &x) {return 3 * x;});

    foo<int>(bar);
    foo<int>([](const int &x) {return 3 * x;});

    foo2(bar);
    foo2([](const int &x) {return 3 * x;});

    return 0;
}

0 个答案:

没有答案