相关疑难解决方法(0)

什么是"这个的右值参考"?

在clang的C++ 11状态页面中遇到了一个名为"rvalue reference for*this"的提案.

我已经阅读了很多关于rvalue引用并理解它们的内容,但我认为我不知道这一点.我也无法使用这些条款在网上找到太多资源.

页面上的提案文件有一个链接:N2439(将移动语义扩展到*this),但我也没有从中获得太多的例子.

这个功能是什么?

c++ qualifiers c++-faq move-semantics c++11

229
推荐指数
3
解决办法
2万
查看次数

通过通用参考捕获

将推导出的类型作为r值引用传递时,我会获得通用引用功能,并且可以像这样完美转发:

template <typename T>
void func(T&& t) {
    other_func(std::forward<T>(t));
}
Run Code Online (Sandbox Code Playgroud)

...由于T的推导方式和标准的参考折叠规则.

现在考虑other_func采用一个函数对象

template <typename T>
void func(T&& t) {
    other_func([](int v) { return t + v; }); // I chose addition for example purposes
}
Run Code Online (Sandbox Code Playgroud)

现在很明显,由于没有被捕获,这将无法编译.我的问题是:我如何捕获它,以便捕获的值将是推断出的T值?

这是否可以使用新的通用lambda捕获?如果......怎么样?

[t = std::forward<T>(t)] ? 
Run Code Online (Sandbox Code Playgroud)

我仍然没有真正掌握新捕获初始化器的机制......

c++ lambda c++14

20
推荐指数
2
解决办法
1699
查看次数

标签 统计

c++ ×2

c++-faq ×1

c++11 ×1

c++14 ×1

lambda ×1

move-semantics ×1

qualifiers ×1