const资格转换

cpx*_*cpx 3 c++ const qualifiers implicit-conversion

从(4.4/1)开始

如果"cv2 T"比"cv1 T"更符合cv,则可以将类型"指向cv1 T的指针"的rvalue转换为"指向cv2 T的指针"的rvalue.

我不知道标准定义'更多cv-qualifield'类型的位置,但据我所知,const的声明符比非const更符合cv.

对于以下转换,标准的引用如何适用或如何知道哪一个更少或更多cv-qualifed?

int *const c1 = 0;
int const* c2 = 0;
const int *const c3 = 0;

c1 = c2; // allowed
c1 = c3; // allowed
Run Code Online (Sandbox Code Playgroud)

更新:

c2 = c1;
c2 = c3;
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 5

3.9.3/4中的表6给出了cv限定符的部分排序,3.9.3/4也给出了更多cv限定的定义.

  • 没有cv-qualifier <const
  • 没有cv-qualifier <volatile
  • 没有cv-qualifier <const volatile
  • const < const volatile
  • volatile < const volatile