我有一个类有两个重载成员。一个接受一个整数,另一个接受一个参数的模板函数。演员未解决模板重载类成员
class MyClass
{
public:
void doSomething(int data){ std::cerr << data;}
template <typename T> doSomething(T &&data){ std::cerr << data;}
};
我想这个功能
MyClass myobject;
auto my_bind = std::bind(&MyClass::doSomething, &myobject, 2);
my_bind();
绑定但这不会编译因为编译器不能扣除调用哪个函数。
error: no matching function for call to 'bind(unresolved overloaded function type, MyClass*, int)'
我明白我必须施放这个功能。
auto my_bind2 = std::bind(static_cast<void (MyClass::*)(int)>(&MyClass::doSomething), &myobject, 2);
现在它编译和按预期工作。
但是如果我想将它与任何其他参数绑定来调用模板函数呢?这甚至有可能吗?我找不到语法。
这不起作用:
auto my_bind3 = std::bind(static_cast<void (MyClass::*)(std::string)>(&MyClass::doSomething), &myobject, std::string("Hello"));
我想避免使用lambda表达式。我简化了MCVE的代码,但在实际的代码中,我应该使用成员指针。
感谢您的帮助
* “我想避免使用lambda表达式。” * - 你喜欢困难的方式? – WhiZTiM