ref-qualifier相关内容

c ++-const成员func,只能使用ref限定符在左值实例上调用

我正在尝试通过ref限定符强制在类的仅左值实例上调用类的const'getter'方法,并且由于某种原因得到了意外的结果(我正在通过 c ++ 1z 标志在 Windows C ++ 17 支持的 clang 6.0.1 进行编译>): 声明 bool getVal()const& 允许在右值引用上也调用该方法. 声明 bool getVal()& ;; 据我了解,不允许在右值引 ..
发布时间:2021-04-19 20:26:53 C/C++开发

STL容器的右值ref限定词

为什么要使用STL容器的元素访问成员功能,例如 std :: array :: operator [] 或 std :: vector :: operator [] 没有右值引用限定符重载?当然我可以做 std :: move(generate_vector()[10]),但是我很好奇在标准化ref限定符时是否考虑添加右值ref限定符重载. 我认为 std :: array 和 ..
发布时间:2021-04-19 20:01:08 C/C++开发

从r值ref限定方法返回r值参考是一种好习惯吗?

如我所见,一般规则是完全不从函数返回r值引用(罕见的除外)特别案例)。但是类方法呢? C ++标准库中有一个示例,该示例从类的r值ref限定的方法返回r值引用( std :: optional :: operator *( ) 和 std :: optional 类的> std :: optional :: value() 方法)。请参见C ++ 17标准的 23.6 ..
发布时间:2020-09-28 02:37:43 C/C++开发

函数的引用限定符是否有实际用例?

最近我了解了函数的引用限定符,例如 struct foo { void bar(){} void bar1()& {} void bar2()&& {} }; 在我可能需要此功能的地方,该语言功能是否有实际用例? 解决方案 基本上有两种用途: 为了提供优化的重载,例如将成员移出临时对象,而不必复制它。 防止滥用API。例如, ..
发布时间:2020-09-27 20:27:13 C/C++开发

转发成员函数的cv-ref-qualifier

如果没有其他重载(例如 f(T&)或 f(volatile T&& c $ c>)( template f(T& amp;); ,则 T&&& 是所谓的转发引用和 T 是 U 或 U& 一些 cv限定类型 U 。但是对于成员函数的 cv-ref-qualifiers ,没有这样的规则。在 struct S {void f()&& {; }}; a S :: f()始终为rvalue-引 ..
发布时间:2016-11-05 22:26:48 C/C++开发