Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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::apply\u访问者时的变体移动语义_C++_Move Semantics_Boost Variant_Apply Visitor - Fatal编程技术网

C++ 使用boost::apply\u访问者时的变体移动语义

C++ 使用boost::apply\u访问者时的变体移动语义,c++,move-semantics,boost-variant,apply-visitor,C++,Move Semantics,Boost Variant,Apply Visitor,当我试图从另一个AST()构建一个AST时,我注意到在调用访问者时存在不必要的副本构造。但是,如果我们谈论C++11/C++1y,move结构应该在那里 创建正确支持通用引用的visitor/multivisitor版本是否存在无法克服的困难?否,没有无法克服的问题。Variant早在C++11之前就已经设计好了,因此不支持这种东西。我想,维护人员会喜欢一个补丁来添加支持(可能使用Boost.Move来提供C++03仿真)。@Mankarse我确信,添加这样的支持并不简单。当然,从头开始编写一个

当我试图从另一个AST()构建一个AST时,我注意到在调用访问者时存在不必要的副本构造。但是,如果我们谈论C++11/C++1y,move结构应该在那里


创建正确支持通用引用的visitor/multivisitor版本是否存在无法克服的困难?

否,没有无法克服的问题。Variant早在C++11之前就已经设计好了,因此不支持这种东西。我想,维护人员会喜欢一个补丁来添加支持(可能使用Boost.Move来提供C++03仿真)。@Mankarse我确信,添加这样的支持并不简单。当然,从头开始编写一个全新的variant类可能比添加对Boost.variant的支持要容易得多(同时保持与旧编译器的兼容性和对旧编译器的支持)。尽管如此,问题是在Boo.Apple的实现中,而不是C++中的一个变体类的概念,或者是由Boosi.Apple公开的高级接口。我发现了解决方法:使用静态访问器,如“代码>结构:A: Booo::StasyTeave:Value> {ReultTyType操作符()(INT&X){…= STD:::移动”(x) ;}};,即在函子签名中使用非常量引用参数。