草庐IT

boost-move

全部标签

c++ - 使用 boost::asio 的 AF_NETLINK (netlink) 套接字

我正在编写基于this的多播客户端/服务器应用程序和this;效果很好。但是,当计算机中事件网络接口(interface)的数量发生变化时,我还需要做一些事情,比如thispage的示例部分中的程序。我想我应该使用boost::asio::local中的工具,但我不确定我应该使用boost::asio::local::datagram_protocol还是boost::asio::local::stream_protocol或者...如何做尽可能相似的事情的例子会很有帮助。谢谢。 最佳答案 正如您所注意到的,必须编写一些额外的代码才

c++ - 使用不同的类类型重复 Boost 单元测试

我有两个类共享完全相同的API和功能(它们包装不同的第3方API以提供相同的功能)。这两个类不有共同的基类/接口(interface)。我对其中一个进行了boost单元测试,并想在另一个上运行完全相同的测试,但现在我只知道如何复制粘贴测试并查找/替换类名。除了在两个地方更新测试很烦人之外,这还意味着不能保证两个类的测试是相同的。有什么方法可以“模板化”测试用例吗?如果没有,你会如何解决这个问题?到目前为止我能想到的是类似的东西(请原谅伪代码):templatevoidrunTests(){Tt;//dotestshere}BOOST_AUTO_TEST_CASE(test_X){run

C++ move 语义 : why copy assignment operator=(&) is called instead of move assignment operator=(&&)?

我有以下代码:#include#includeusingstd::cout;structSomeType{SomeType(){}SomeType(constSomeType&&other){cout我希望move构造函数调用move赋值运算符。下面是这个程序的输出:SomeType(SomeType&&)operator=(constSomeType&)operator=(SomeType&&)如您所见,move赋值运算符已成功调用,但在move构造函数内分配给*this时未成功调用。为什么会发生这种情况,我能以某种方式解决它吗? 最佳答案

c++ - boost::filesystem::remove_all(path) 是如何工作的?

我正在尝试使用boost::filesystem::remove_all(path)从特定路径中删除所有目录、子目录和包含的文件。如果文件在另一个程序中打开,我还想显示一条错误消息。在这种情况下boost::filesystem::remove_all(path)会抛出异常吗?或者有其他方法可以实现吗? 最佳答案 这不适合发表评论,所以我发布为答案只需查看源代码:http://www.boost.org/doc/libs/1_55_0/libs/filesystem/src/operations.cppBOOST_FILESYSTE

c++ - 为什么 map 上的 BOOST_FOREACH 仅适用于 typedef

我试图通过map编写一个简单的循环元素,我想知道为什么我使用的第一种语法不起作用/无法编译?我写的第一个版本如下,它不能用VS'2008/boost版本1.44编译:std::mapmyMap;...BOOST_FOREACH(map::value_type&p,myMap){}现在,如果我像下面这样重写代码,编译就可以了,但为什么呢?typedefstd::mapmyMap_t;myMap_tmyMap;...BOOST_FOREACH(myMap_t::value_type&p,myMap){} 最佳答案 它是一个预处理器宏,它

c++ - GCC 4.9 的 unordered_set 和 std::move

当在GCC4.9上移出一个unordered_set,然后重新使用移出的对象时,我在添加到它时得到除以零。我的理解(来自http://en.cppreference.com/w/cpp/utility/move)是可以使用移出的对象,前提是不违反其先决条件。在移出的集合上调用clear()很好(这在前提条件的上下文中是有意义的),但我不清楚我添加新元素是否违反了任何前提条件。示例代码:#includeusingnamespacestd;voidfoo(unordered_set&&a){unordered_setcopy=std::move(a);}voidtest(){unorder

c++ - boost 日志记录类属性

我正在尝试为我的应用程序做一个日志。我想添加一个属性,这样我就可以知道日志属于哪个类。我已经开始测试它是否有效:#include#include#include#include#include#include#includeenumseverity_levels{debug,info,warning,error};typedefboost::log::sinks::synchronous_sinkSinkSysLogBackEnd;typedefboost::log::sources::severity_loggerBoostLogger;std::ostream&operator(l

c++ - 为共享指针 move 构造函数和 = 运算符

说,我有一个类:classGameObject///headerfile{....std::shared_ptrtransform;}///cppfile//CopyCtorGameObject::GameObject(constGameObject&rhs):transform(rhs.transform){}//MoveCTorGameObject::GameObject(GameObject&&rhs):transform(std::move(rhs.transform)){}为具有shared_ptr成员变量的类创建move构造函数是否正确?或者我是否需要在move后调用rhs

c++ - 用 boost::shared_ptr<std::list<T>> 初始化 boost::shared_ptr<std::vector<T>>

我想初始化一个boost::shared_ptr>vec在构造函数中使用boost::shared_ptr>list初始化列表?这可能吗?我试过这个:测试.hppclassTest{public:Test(boost::shared_ptr>list);private:boost::shared_ptr>vec;};测试.cppTest::Test(boost::shared_ptr>list):vec(list->begin(),list->end()){}部分错误信息:Test.cpp:Inconstructor‘Test::Test(boost::shared_ptr>>)’:T

c++ - std::string& 与 boost::string_ref

如果我在std::string&上使用boost::string_ref还重要吗?我的意思是,在处理字符串时,使用boost::string_ref真的比std版本更有效吗?我真的不明白这里提供的解释:http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html.真正让我感到困惑的是std::string也是一个仅指向分配内存的句柄类,并且自c++11以来,具有移动语义的复制操作在上面的文章中提到不会发生。那么,哪个更有效? 最佳答案 strin