G++ 4.5.0 中的 std::forward_as_tuple

mas*_*ers 4 c++ tuples gcc4 perfect-forwarding c++11

我对该功能有迫切的需求std::forward_as_tuple,但仅限于使用 GCC 4.5.0(我知道这是一个糟糕的情况,但它会为我解决很多问题,所以请把尖刻的评论保留在最低限度)。该<tuple>头似乎并不包含函数(因为它应该),所以我的问题是:

  1. 它是否隐藏在其他标题中?(这种情况以前发生过,但很难确定。)
  2. 是否可以推出自己的实现?这就是:这是可实现与C ++ 11的部分在GCC 4.5.0执行?如果有人真的知道如何做到这一点,那就再好不过了。

zau*_*ufi 5

实现很简单:

template <typename... Elements>
/*constexpr*/ tuple<Elements&&...>
forward_as_tuple(Elements&&... args) /* noexcept */
{
    return tuple<Elements&&...>(std::forward<Elements>(args)...);
}
Run Code Online (Sandbox Code Playgroud)

不知道它出现在哪个 GCC 中。根据本文档,自 gcc 4.3 以来,可变参数模板和 rvalue 引用可用,因此它应该适用于您的 gcc 4.5(我希望)