我没有链接支持这些声明,但据我所知,与Microsoft C++一起分发的STL实现使用一些内部非标准魔术注释来标记vector
(和其他STL集合)为具有性能交换,因此vector<vector<>>
不会复制内部向量但交换它们.直到VC9,在VC10中,它们将切换到rvalue-references.我认为你不应该像没有交叉编译器的方式那样标记你自己的类,你的代码只能在特定的编译器版本上工作.
编辑:我快速浏览了<vector>
VC9 中的标题,发现了这个:
// vector implements a performant swap
template <class _Ty, class _Ax>
class _Move_operation_category<vector<_Ty, _Ax> >
{
public:
typedef _Swap_move_tag _Move_cat;
};
Run Code Online (Sandbox Code Playgroud)
只是为了实验,你可以尝试为你自己的类型专门化这个类,但正如我所说,这是STL版本特定的,它在VC10中消失
归档时间: |
|
查看次数: |
1741 次 |
最近记录: |