我需要移植std::移动到我的内核吗

Do I need to port std::move to my kernel?

本文关键字:移动 内核 我的 std      更新时间:2023-10-16

我担心在内核领域,我将无法访问std::movestd::forwardstd::initializer_list等功能。虽然这些功能中的一些是内置在语言中的,但它们仍然需要适当的头和库实现。以下内容是否足以利用move语义,或者我是否需要深入九码并移植一个C++库?

template <typename T>
typename remove_reference<T>::type&& move(T&& arg)
{
  return static_cast<typename remove_reference<T>::type&&>(arg);
}

如果没有错别字,就应该这样做。标准中给出了完整的定义(实际上有两个:旧的和新的),我已经做到了:只需将官方版本复制到我自己的头中,然后解决我的特殊需求和/或支持旧的gnu-std-lib,但编译器会查找rvalue引用。

为了解决@T.C.的问题,能够编写自己的仅移动类型并能够使用它们(例如从函数返回)仍然很有用,即使提供的容器不知道这一点&,如果你提供了所有的std::move,std::forward,以及它需要的东西。我还获得了一种混合方法,它使用本机右值引用和Boost移动模拟同时工作,以与使用Boost编译的代码兼容。