协变cv限定符是否适用于C++;? 在C++中,减少派生类中返回类型的CV限定符是有效的: class Base { virtual const Base* f(); }; class Derived : public Base { Base* f() override; };

协变cv限定符是否适用于C++;? 在C++中,减少派生类中返回类型的CV限定符是有效的: class Base { virtual const Base* f(); }; class Derived : public Base { Base* f() override; };,c++,constants,covariance,C++,Constants,Covariance,这对指向基元类型的指针有效吗 class Base { virtual const int* f(); }; class Derived : public Base { int* f() override; };

这对指向基元类型的指针有效吗

class Base {
    virtual const int* f();
};

class Derived : public Base {
    int* f() override;
};

<协变CV限定符适用于C++中的原始类型?

§10.3.7虚拟功能

重写函数的返回类型应与重写函数的返回类型相同,或与函数类共变。如果函数
D::f
重写函数
B::f
如果函数的返回类型满足以下条件,则它们是协变的:

  • 两者都是指向类的指针,都是对类的左值引用 类,或两者都是对类的右值引用
  • 返回类型
    B::f
    中的类与该类是同一个类 在返回类型
    D::f
    中,或是一个明确且可访问的 返回类型为
    D::f
  • 两个指针或引用都具有相同的cv资格和
    D::f的返回类型中的类类型

有什么理由认为这是无效的吗?或者这只是一个疏忽?