草庐IT

boost-move

全部标签

c++ - 是否可以使用 Boost.Hana 进行反序列化?

我开始使用Boost.Hana,想知道是否有一种方法可以反序列化回Boost.Hana已知的结构。我知道将这样的Struct序列化为json字符串非常简单,但我没有找到任何关于其他方式的信息。目前是无法使用Boost.Hana反序列化数据还是我遗漏了什么? 最佳答案 Hana是一个元编程库。它提供了可用于构建的工具更复杂的功能,如序列化,但它不提供这样的功能功能本身。这根本不是那个图书馆的范围。另外,关于您的特定用例;解析不是一个简单的问题和其他库像Boost.Spirit已经尝试解决它。​​话虽如此,我还是勾勒了一个使用Hana反

c++ - 为什么从初始化列表中初始化 vector 时不使用 move 构造(通过隐式构造函数)

为了演示move语义,我编写了以下示例代码,其中包含来自int的隐式构造函数。structC{inti_=0;C(){}C(inti):i_(i){}C(constC&other):i_(other.i_){std::cout和autovec2=std::vector{1,2,3,4,5};cout有输出Acopyconstructionwasmade.1Acopyconstructionwasmade.2Acopyconstructionwasmade.3Acopyconstructionwasmade.4Acopyconstructionwasmade.5reversingAmov

c++ - boost 绑定(bind)编译错误

classA{boolOutofRange(string&a,string&b,stringc);voidGet(vector&str,string&a,string&b);}voidA::Get(vector&str,string&a,string&b){str.erase(std::remove_if(str.begin(),str.end(),BOOST_BIND(&A::OutOfRange,a,b,_1)),str.end());}我收到如下错误:Error7errorC2825:'F':mustbeaclassornamespacewhenfollowedby'::'Fil

c++ - Boost Spirit 和 Lex 解析器问题

我一直在努力尝试(逐步)修改文档中的示例代码,但没有太大的不同,我没有得到我期望的行为。具体来说,“if”语句在(我的意图是)它应该通过时失败(有一个“else”但解析器的那部分在调试期间被删除)。赋值语句工作正常。我也有一个“while”语句,它与“if”语句有同样的问题,所以我确信如果我能得到帮助来弄清楚为什么一个不工作,那么让另一个继续工作应该很容易。它一定有点微妙,因为这几乎是其中一个示例中的逐字记录。#include#include#include#defineBOOST_SPIRIT_DEBUG#include#include#include#include#include

c++ - 在 boost 上从 bitset 到 bitset 的无序(哈希)映射

我想使用缓存,由boost的unordered_map实现,从dynamic_bitset到dynamic_bitset。当然,问题在于bitset中没有默认的哈希函数。这似乎不像是概念性问题,但我不知道如何解决技术问题。我应该怎么做? 最佳答案 我发现了一个意想不到的解决方案。事实证明,boost有一个选项可以#defineBOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS。定义它时,包括m_bits在内的私有(private)成员将变为公共(public)成员(我认为它是用来处理旧编译器或其他东西的)。所

c++ - 如何在 boost::filesystem 中使用 copy_file?

我想将一个文件从一个目录复制到另一个目录,但我的程序总是因为某些原因而中止。之前有没有人这样做过,可以告诉我哪里出了问题吗?我怎么能捕捉到copy_file抛出的异常,我查看了boost网站,但我找不到任何关于异常的相关信息。pathuser_path("C:\\MyFolder");boost::filesystem::create_directory(user_path);pathfile("C:\\Another\\file.txt");boost::filesystem::copy_file(file,user_path);谢谢, 最佳答案

C++/boost : Undefined Symbols in example?

我正在尝试编译的示例来自:http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/examples.html(聊天示例)这是我用来制作它的:>>>g++chat_client.cppchat_message.hpp>>>g++chat_server.cppchat_message.hpp这是终端输出的内容:%g++chat_client.cppchat_message.hppInfileincludedfromchat_client.cpp:17:chat_message.hpp:Inmemberfunction‘voidcha

c++ - boost::bind() 是按引用还是按值复制参数?

为什么valgrind的DRD工具提示“Conflictingloadbythread...atsize4”:关于这样的代码:voidSomeFunction(constint&value){boost::bind(...,value);/*boost::bind()是按引用还是按值存储值? 最佳答案 按值(value)。1但你可以做到copybyref相反:voidSomeFunction(constint&value){boost::bind(...,boost::ref(value));boost::bind(...,boos

c++ - 是否值得添加一个支持 move 的二传手?

这篇文章有点啰嗦,所以在开始之前我想弄清楚我要问的是什么:您是否已将启用move的setter添加到您的代码中并且您是否发现它值得付出努力?我发现的预期行为中有多少可能是特定于编译器的?我在这里关注的是在我设置复杂类型的属性的情况下是否值得添加启用move的setter函数。在这里,我有启用move的Bar和Foo,它有一个可以设置的Bar属性。classBar{public:Bar():_array(1000){}Bar(Barconst&other):_array(other._array){}Bar(Bar&&other):_array(std::move(other._arra

c++ - 使用 C++ boost::split 拆分字符串而不拆分引用文本

我正在使用boost::split(strs,r_strCommandLine,boost::is_any_of("\t"));将字符串吐出到token中以解析简单的脚本。到目前为止,一切都很好。但是,对于下面的字符串command_namefirst_argument"Secondargumentwhichisaquotedstring."我希望我的代币是strs[0]=command_namestrs[1]=first_argumentstrs[2]="Secondargumentwhichisaquotedstring."当然,我可以在标记的开头和结尾搜索引号字符,并使用“”合并