17得票3回答
可调用对象的完美转发

我想到了以下代码,可以将类似于 R() 的可调用对象转换为类似于 void() 的可调用对象: ``` TBD ``` #include <utility> template<class Callable> auto discardable(Callable&amp...

17得票1回答
std::forward()的右值引用重载有什么作用?

我正在尝试完美转发技术,发现std::forward()需要两个重载: 第一个重载: template <typename T> inline T&& forward(typename std::remove_reference<T>::type&...

16得票3回答
如何在C++14中编写通用的转发Lambda?

我该如何在C++14中编写一个通用的转发lambda函数? 尝试 #1[](auto&& x) { return x; } 在函数主体中,x是一个左值,所以这并不起作用。 尝试 #2[](auto&& x) { return std::forward<...

16得票3回答
为什么要显式移动一个转发引用?

我正在查看一些代码,看到以下函数: template <typename... Args> static return_t make_return(Args &&... args) { // using std::forward<Args> w...

15得票4回答
使用auto&&进行完美转发返回值

考虑一下来自C++ Templates: The Complete Guide (第2版)的这句话: decltype(auto) ret{std::invoke(std::forward<Callable>(op), ...

15得票1回答
`auto &&`参数可以进行完美转发吗?

对于模板函数,我使用完美转发,像这样: template<typename T> void f (T && v) { g (std::forward<T> (v)); } 如何在 C++14 lambda 表达式中使用完美转发的 auto &a...

15得票1回答
C++11标准下的std::function和完美转发

为什么C++标准中std::function<>::operator()的定义是这样的:R operator()(ArgTypes...) const; 而不是R operator()(ArgTypes&&...) const; 为了正确地传递参数,我们可能认为需要使用 ...

15得票2回答
没有完美转发的情况下使用std::forward?

关于std::forward的建议通常只限于完美转发函数模板参数的典型用例;一些评论者甚至认为这是std::forward唯一有效的用法。但考虑以下代码: // Temporarily holds a value of type T, which may be a reference or ...

15得票1回答
检测(可能是抽象的)基类的受保护构造函数

我正在尝试使用C++11的新特性。在我的设置中,我非常希望能够使用继承构造函数,但是不幸的是目前没有编译器实现这个功能。因此,我正在尝试模拟同样的行为。我可以写出像这样的代码: template <class T> class Wrapper : public T { p...

15得票3回答
C++11的std::forward_as_tuple和std::forward

当我将函数参数用作std::forward_as_tuple的参数时,我是否应该使用std::forward来完善它们? template<class ... List> void fn(List&& ... list){ // do I need this...