universal-reference相关内容

什么是`auto &&e` 在基于范围的 for 循环中做什么?

假设我在使用基于范围的循环编程时的当前规则说 尽可能使用 for(auto const &e :...) 或 for(auto &e:...) 而不是 for(自动 a: ...). 我以我自己的经验和这个问题为例. 但是在阅读了新的 简洁的循环 我想知道,我不应该用 && 替换我的规则中的 & 吗?正如此处所写,这看起来像Meyers 的通用参考文献. 所以,我问自己,我 ..

模板化类的通用参考

示例: template 班级酒吧{民众:void foo(T&& arg){std::forward(arg);}};Bar酒吧;bar.foo(10);//有效诠释{10};bar.foo(a);//错误 C2664:无法将参数 1 从“int"转换为“int &&" 似乎通用引用仅适用于模板化函数,而仅适用于类型推导,对吗?那么在课堂上使用它没有意义吗?在我的情况下使用 std::for ..
发布时间:2021-09-04 20:52:17 C/C++开发

通用引用和转发引用之间有区别吗?

此函数的参数将绑定到右值引用: void f(int && i); 但是,此函数的参数将绑定到右值或左值引用: template void f(T && t); 我经常听到这被称为通用参考书. 我也听说过它被称为转发参考. 他们是同一回事吗? 如果函数主体调用std::forward,它是否只是转发参考? 解决方案 它们是同一意思 ..

什么样的问题不转发通用引用?

据我所知,在C ++ 11中,通用引用应该总是使用 std :: forward ,但我不知道什么样的问题如果不使用 std :: forward ,可能会发生。 ; T> void f(T& x); { //如果在没有std :: forward(x)的情况下使用x会怎么样? } 您能介绍一下这种情况下可能发生的问题吗? 始终使用 。 > std ..
发布时间:2016-10-22 19:28:52 C/C++开发

什么是`auto&&在基于范围的for循环中做?

假设我使用基于范围的循环进行编程时的当前规则为 使用 e:...)或 for(auto& e:...) a:...)。 我根据自己的经验和循环循环我不知道,我不应该用&& 替换我的规则中的& ?如这里所示,这看起来像 所以,我问自己,如果我的新规则是 使用替换(auto const& e:...)或 for(auto& e:...)如果可能... 或者这不总是工作,因 ..