如何在一般的lambda中完美地转发`auto&&`?

时间:2014-07-02 15:40:23

标签: c++ c++11 auto lambda perfect-forwarding

C ++ 14支持通用lambda。但是,以下代码被clang 3.4拒绝。

#include <utility>

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

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

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

1 个答案:

答案 0 :(得分:28)

auto不是一个类型所以我并不感到惊讶这不起作用。但你不能使用decltype吗?

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

Scott Meyers has more details.