37

C++14 は汎用ラムダをサポートしています。ただし、次のコードは clang 3.4 で拒否されます。

#include <utility>

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

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

auto&&一般的なラムダで完全に転送する方法は?

4

1 に答える 1

41

autoはタイプではないので、これが機能しないことは驚くことではありません。でも使えないのdecltype

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

Scott Meyers が詳細を説明しています。

于 2014-07-02T15:42:58.893 に答える