5

我已经用 G++ 4.7 组合了一个最前沿的设置(尽管目前我仍在使用sudo apt-get boost-all-devDebian Wheezy 附带的 boost 1.48)。

我的代码设置在要使用的逻辑数据结构是 unique_ptr 的多维数组的地方。但是multi_array,如果其中有一个 unique_ptr ,似乎甚至无法构造一个空的单元素数组。因此这是有效的:

boost::multi_array<int, 1> arrWorks (boost::extents[1]);

但这不会:

boost::multi_array< unique_ptr<int>, 1> arrFails (boost::extents[1]);

我想编译器的相关抱怨是:

/usr/include/c++/4.7/bits/stl_uninitialized.h:225: 来自 'void std::uninitialized_fill_n(_ForwardIterator, _Size, const _Tp&) [with _ForwardIterator = std::unique_ptr*; _Size = 无符号整数;_Tp = std::unique_ptr]'</p>

optional< unique_ptr<...> >即使我应用了此处提供的补丁,我也遇到了一些问题:

https://svn.boost.org/trac/boost/ticket/1841

(注意:通过Is it possible to move a boost::optional 找到的?

例如:

boost::optional< unique_ptr<int> > optWorks (new int);

// Fails
boost::optional< unique_ptr<int> > optFails (std::move(optWorks));

我觉得我在做的事情是合法的。事实上,通过将 unique_ptr 合并到这个项目中,我已经在所有权转移语义方面发现了一些错误。所以我不想说“哦,这太复杂了,只需使用原始指针”

这是否在 boost 的议程上支持?有时间表吗?在此期间我可以使用任何简单的解决方法吗?

4

0 回答 0