相关疑难解决方法(0)

使用前进的优点

在完美转发中,std::forward用于转换命名的右值引用t1t2未命名的右值引用.这样做的目的是什么?inner如果我们离开t1&t2作为左值,那将如何影响被调用的函数?

template <typename T1, typename T2>
void outer(T1&& t1, T2&& t2) 
{
    inner(std::forward<T1>(t1), std::forward<T2>(t2));
}
Run Code Online (Sandbox Code Playgroud)

c++ c++-faq rvalue-reference perfect-forwarding c++11

411
推荐指数
6
解决办法
6万
查看次数

要求参考折叠规则的简要说明:(1)A && - > A&,(2)A &&& - > A&,(3)A &&& - > A&,和(4)A && && - > A &&

以下链接提供了4种形式的引用折叠(如果我是正确的,这些是唯一的4种形式):http://thbecker.net/articles/rvalue_references/section_08.html.

从链接:

  1. A &&成为A&
  2. A &&&成为A&
  3. A &&&成为A&
  4. A && &&成为A &&

虽然我可以做出有根据的猜测,但我想简要解释这些参考折叠规则背后的基本原理.

一个相关的问题,如果可能的话:在典型的实际用例中,这些STL实用程序(例如,等)在C++ 11内部使用这些引用折叠规则吗?(注意:我特别询问C++ 11中是否使用了引用折叠规则,而不是C++ 03或更早版本.)std::move()std::forward()

我问这个相关的问题,因为我知道这样的C++ 11实用程序std::remove_reference,但我不知道是否与std::remove_referenceC++ 11中常规使用的引用相关的实用程序,以避免需要引用 - 折叠规则,或者它们是否参考折叠规则一起使用.

c++ stl

39
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

c++-faq ×1

c++11 ×1

perfect-forwarding ×1

rvalue-reference ×1

stl ×1