在函数重载时使用 std::invoke
Using std::invoke when a function is overloaded
我正在尝试将 std::invoke()
与重载函数一起使用:
#include <iostream>
#include <functional>
struct S {
void foo(int) { }
void foo(int, int) { }
};
int main()
{
S s;
std::invoke(&S::foo, s, 1);
}
但我得到一个错误:'std::invoke': no matching overloaded function found
。当只有一个名称为 foo()
的函数时,它工作正常。函数重载时是否可以使用std::invoke()
?
有两个示例解决方案:
std::invoke(static_cast<void(S::*)(int)>(&S::foo), s, 1);
std::invoke([&s]() { s.foo(1); });
我正在尝试将 std::invoke()
与重载函数一起使用:
#include <iostream>
#include <functional>
struct S {
void foo(int) { }
void foo(int, int) { }
};
int main()
{
S s;
std::invoke(&S::foo, s, 1);
}
但我得到一个错误:'std::invoke': no matching overloaded function found
。当只有一个名称为 foo()
的函数时,它工作正常。函数重载时是否可以使用std::invoke()
?
有两个示例解决方案:
std::invoke(static_cast<void(S::*)(int)>(&S::foo), s, 1);
std::invoke([&s]() { s.foo(1); });