【发布时间】:2014-05-03 05:54:56
【问题描述】:
我正在尝试在 boost.type 擦除库中使用仅移动类型:
using any_move_only_object = boost::type_erasure::any<boost::mpl::vector<
//my interface,
//How can I say I want move only types here?>>
我不知道如何使仅移动类型可用于库,并且找不到任何文档。
有可能吗?
问候
【问题讨论】:
-
这是不可能的(boost/type_erasure/detail/storage.hpp 定义
storage没有任何非常量或移动构造函数,并且代码中似乎没有任何解决方法)。我认为这是一个错误/错误功能,应该在Boost.Dev 邮件列表上报告/讨论。 -
请记住,Boost 库往往与 C++03 兼容,这可能解释了(部分?)缺乏对移动语义的支持
-
好吧,自己编写并不是最好的解决方案,我想我将不得不恢复到经典的 OO 继承。但是拥有这个功能真的很棒,对我当前的代码有很大帮助。另一种方法是使事物可复制,但实际上我认为这对我来说没有多大意义。可能会增加误用的可能性。
-
@Mankarse:这应该是一个答案。
标签: c++ c++11 boost type-erasure