gpt4 book ai didi

c++ - 使用可变参数模板的通用访问者

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:13 29 4
gpt4 key购买 nike

我有下面的小代码:

#include <iostream>
#include <boost/variant.hpp>
#include <functional>

struct Test
{
void one() const { std::cout << "one\n"; }
void two(int i) const { std::cout << "two\n"; }
};

struct TestVisitor : public boost::static_visitor<>
{
template<class ... Args>
void operator()( const std::function<void (Args...)>& func) const
{
//func(args...);
}
};

int main()
{
Test test;
std::function<void ()> f = std::bind(&Test::one, &test);

typedef boost::variant< std::function<void ()>, std::function<void (int)> > fvariant;
fvariant var = f;
boost::apply_visitor( TestVisitor(), var );

return 0;
}

用可变数量的参数调用函数对象“func”会很好(注释行)。你知道实现它的最简单方法吗?

编辑:TestVisitor 不是最终版本。随意修改它,以便将 Args 的参数包应用到 std::function 调用。

最佳答案

这个答案可以帮助您将函数应用于参数包

How do I expand a tuple into variadic template function's arguments?

关于c++ - 使用可变参数模板的通用访问者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6506959/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com