如何在通用 lambda 中完美地转发`auto&&`? [英] How to perfectly forward `auto&&` in a generic lambda?

查看:25
本文介绍了如何在通用 lambda 中完美地转发`auto&&`?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

C++14 支持泛型 lambda.但是下面的代码被clang 3.4拒绝了.

C++14 supports generic lambdas. However, the following code is rejected by clang 3.4.

#include <utility>

void f(int);
void f(int&);

int main()
{
    [](auto&& v) { f(std::forward<auto>(v)); }(8); // error
}

如何在通用 lambda 中完美地转发 auto&&?

How to perfectly forward auto&& in a generic lambda?

推荐答案

auto 不是一种类型,所以我并不奇怪这不起作用.但是你不能用decltype吗?

auto is not a type so I’m not surprised this doesn’t work. But can’t you use decltype?

[](auto&& v) { f(std::forward<decltype(v)>(v)); }(8);

Scott Meyers 有更多详细信息.

这篇关于如何在通用 lambda 中完美地转发`auto&amp;&amp;`?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆