Hos*_*ork 5 c++ boost-multi-array unique-ptr c++11 boost-optional
我用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]);
Run Code Online (Sandbox Code Playgroud)
但这不是:
boost::multi_array< unique_ptr<int>, 1> arrFails (boost::extents[1]);
Run Code Online (Sandbox Code Playgroud)
我想编译器的相关抱怨是:
/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 = unsigned int; _Tp = std :: unique_ptr]'
optional< unique_ptr<...> >即使我应用了这里提供的补丁,我也遇到了一些问题:
https://svn.boost.org/trac/boost/ticket/1841
(注意:找到通过是否可以移动boost :: optional?)
例如:
boost::optional< unique_ptr<int> > optWorks (new int);
// Fails
boost::optional< unique_ptr<int> > optFails (std::move(optWorks));
Run Code Online (Sandbox Code Playgroud)
我觉得我正在做的事情是合法的.事实上,我已经通过将unique_ptr合并到这个项目中,在所有权转移语义方面发现了一些错误.所以我不想说"哦,这太复杂了,只需使用原始指针".
这是支持推动议程吗?它有时间表吗?我可以在此期间使用任何简单的解决方法吗?
Boost.MultiArray 不支持仅移动元素。
要么使用支持仅移动元素的数组库(例如这个) ,要么只使用std::vector.
请参阅示例: https: //godbolt.org/z/nsMf7x3Tv
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |