假设我有一个重载集,如下所示:
class C
{
public:
static void f(const A &);
static void f(const B &);
};
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情
std::variant<A, B> v;
// ...
std::visit(C::f, v);
Run Code Online (Sandbox Code Playgroud)
但这不能编译。是否有某种方法可以获取重载集并将其视为或将其转换为访问者?
事实上,在进一步尝试之后,我意识到我可以做到
std::visit([](const auto & t) { C::f(t); }, v);
Run Code Online (Sandbox Code Playgroud)
所以我将把这个留在这里作为其他有同样问题的人的潜在解决方案。