将参数包与std :: function一起使用时出错

时间:2019-06-13 14:43:24

标签: c++ templates lambda c++17 variadic-templates

我有此代码:

#include <functional>
template<class T, class U>
void f(std::function<T(U)> g) {};
int main() {
    auto h = [](int x) {return x;};
    f<int, int>(h);
}

此代码有效。但是当我使用参数包(下面的代码)时,它失败了……为什么?

#include <functional>
template<class T, class...U>
void f(std::function<T(U...)> g) {};
int main() {
    auto h = [](int x) {return x;};
    f<int, int>(h);
}

使用std::function<int(int)>代替auto使其可以与参数包一起使用。

0 个答案:

没有答案