37

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
}

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

4

1 回答 1

41

auto不是一种类型,所以我并不惊讶这不起作用。但是不能用decltype吗?

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

斯科特迈耶斯有更多细节。

于 2014-07-02T15:42:58.893 回答