我试图强制一个类的const'getter'方法,通过一个ref限定符只在类的lvalue实例上调用,但由于某种原因,得到了一个意外的结果(我在Windows上通过C++1Z标志,使用支持C++17的clang 6.0.1进行编译):
声明bool getVal()const
还允许在rvalue引用上调用该方法。
声明bool getVal()&
不允许在rvalue引用上调用该方法,但是,正如我所理解的那样--该函数不再是常量方法,从设计角度来说,对于“getter”方法来说,这是有问题的。
获取方法的两个特性的正确方法是什么?
使用bool getVal()const&;;
,但为rvalues添加已删除的重载:
bool getVal() const && = delete;