using 声明能否仅引用基于 const 限定的特定重载?
Posted
技术标签:
【中文标题】using 声明能否仅引用基于 const 限定的特定重载?【英文标题】:Can a using declaration refer only to a specific overload based on const qualification? 【发布时间】:2021-12-30 18:32:40 【问题描述】:如果基类有一个函数的 const 和 non-const 版本,我可以在派生类中通过 using 关键字只引用一个或另一个吗?
struct Base
protected:
int x = 1;
const int& getX() const return x;
int& getX() return x;
;
struct Derived : public Base
public:
using Base::getX; // Can we refer to the const or the non-const only?
;
如果没有,在不重复函数体的情况下,让 const getX()
在 Derived 中公开的最简单方法是什么?
【问题讨论】:
const int& getX() const return Base::getX();
或许看看这个***.com/questions/38086698/inherit-from-const-class
【参考方案1】:
using
总是带来给定名称的整个重载集。您不能为特定函数调用 using
,只能为其名称调用,其中包括该名称的所有用途。
您必须使用您喜欢的签名编写函数的派生类版本,该版本调用基类。最简单的方法是使用decltype(auto) getX() const return Base::getX();
。
【讨论】:
以上是关于using 声明能否仅引用基于 const 限定的特定重载?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 const rvalue 限定 std::optional::value() 返回 const rvalue 引用?