我有此代码:
#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
使其可以与参数包一起使用。