我担心在内核空间中我将无法访问像std::move
,std::forward
,std :: initializer_list
等的内容。虽然其中一些功能已内置于语言中,但仍需要相应的头文件和库实现。以下内容是否足以利用移动语义,或者我需要进行C++库的完整移植?
template <typename T>
typename remove_reference<T>::type&& move(T&& arg)
{
return static_cast<typename remove_reference<T>::type&&>(arg);
}
<initializer_list>
(但您无法自己编写它,因为它与编译器实现密切相关)。std::move
和std::forward
可能需要您自己编写,但它们只是美化的转换。移动语义需要(1)编译器支持和(2)支持移动的类型。如果您使用的是 C++03 的std::vector
实现,即使使用std::move
和 C++11 编译器,也无法获得移动语义。 - T.C.