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

标签 c++ visual-c++ c++17 ref-qualifier

我正在尝试通过ref限定符强制仅通过类的的左值实例来调用类的const'getter'方法,并且由于某种原因而得到了意外的结果(我正在使用clang 6.0进行编译。 1,在Windows上通过c++ 1z标志支持C++ 17:
声明bool getVal() const &;允许在右值引用上将方法称为
声明bool getVal() &; 据我所知,不允许在右值引用BUT上调用该方法-该函数不再是const方法,而不再是const方法,对于“getter”方法而言,这在设计上是有问题的。
获得方法的两个特征的正确方法是什么?

最佳答案

使用bool getVal() const &;,但为rvalues添加一个删除的重载:

bool getVal() const && = delete;

关于c++ - c++-const成员func,只能使用ref限定符在左值实例上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62609367/

相关文章:

windows - 如何使用 DvbSiparser.h 在 vc++ 中解析 mpeg2 TS?

visual-c++ - 使用 VC++ 将 Postscript 文档发送到打印机

C++反向整数序列实现

c++ - LPCWSTR ERROR C++类型的参数与类型的参数不兼容

visual-c++ - 新安装的 Visual Studio 2012 缺少头文件

c++ - 使用类模板参数推导创建的临时对象的调用方法

c++ - 使用 Detected Idiom 实现 is_destructible

C++ expected unqualified-id(类继承)

c++ - 写入文件的问题

c++ - 为什么 WinInet 在通过 FQDN 连接时无法通过协商自动验证,但通过 IP 连接时会成功?