Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有人能解释一下boost::visitor\u ptr(boost::variant)的用法吗_C++_Boost Variant - Fatal编程技术网

C++ 有人能解释一下boost::visitor\u ptr(boost::variant)的用法吗

C++ 有人能解释一下boost::visitor\u ptr(boost::variant)的用法吗,c++,boost-variant,C++,Boost Variant,我想将函数指针存储在boost::variant类型中。这对我来说很清楚,包括访问者对象的创建和使用。在我偶然发现的文档中。文档给人的印象是,这可以简化使用存储的指针执行函数的过程。不幸的是,没有任何示例或其他文档,boost源代码发行版中的测试也不包括任何与boost::visitor_ptr相关的代码 谷歌一片空白。如果可能的话,有人能用一个简单的例子来说明boost::visitor\u ptr的用法吗?我认为visitor\u ptr和visitor\u ptr\t与你想做的事情是正交的

我想将函数指针存储在boost::variant类型中。这对我来说很清楚,包括访问者对象的创建和使用。在我偶然发现的文档中。文档给人的印象是,这可以简化使用存储的指针执行函数的过程。不幸的是,没有任何示例或其他文档,boost源代码发行版中的测试也不包括任何与boost::visitor_ptr相关的代码


谷歌一片空白。如果可能的话,有人能用一个简单的例子来说明boost::visitor\u ptr的用法吗?

我认为
visitor\u ptr
visitor\u ptr\t
与你想做的事情是正交的;它们允许您传递一个函数指针,例如,
boost::apply_visitor
。因此,如果您有一个想要应用的自由函数,那么就不要使用
struct my_visitor:boost::static_visitor{stuff operator()(任意w)const{return free_func(w);};boost::apply_visitor(my_visitor{},变体)
您可以使用这个方便的类:
boost::apply_visitor(boost::visitor_ptr(free_func),variant)@melak47我必须消化你在第二条评论中写的内容。我理解你的回答。您可以从运算符()返回一个值,而a不可能返回该值(示例中未提到)。我会看看这会给你带来什么,然后再给你回复。@melak47让我们假设免费函数有一个像
int-add(int-a,int-b)
这样的签名,在这种情况下
访问者中有什么内容?
访问者ptr
看起来不支持二进制或n元访问。