给定这段代码:
#include <iostream>
#include <functional>
template<typename T>
void f(T t1, T t2) { std::cout << t1 << " " << t2 << std::endl; }
template<typename...Ts>
void g(Ts... ts) { f(ts...); }
int main() {
auto f = std::bind(g<int, int>, 1, 2);
f();
return 0;
}
有什么方法可以跳过 g
的模板类型规范吗?在std::bind(g<int, int>, 1, 2)
?
如果不是,是否至少可以只指定一次类型?即 std::bind(g<int>, 1, 2)
这是一个live version
最佳答案
我不确定 bind 是否可行,但你可以使用 lambda 获得相同的功能,并且不需要显式模板参数:
auto f = []{
g(1, 2);
};
关于C++11 绑定(bind)方法签名简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40674664/