C++ C++;隐式转换:转换的顺序

C++ C++;隐式转换:转换的顺序,c++,type-conversion,C++,Type Conversion,以下是CPPreference中的一些部分: 隐式转换序列按以下顺序组成: 1) 零或一个标准转换序列 2) 零或一个用户定义的转换 3) 零或一个标准转换序列 我认为1)->2)或2)->3)转换顺序是常见的。 但是有一个例子是1)->2)->3) 这个呢: struct X { X(int a) {} }; const X x = 5.0; 首先是从double到int的标准转换,然后是从int到X的用户定义转换,然后是从X到const X的标准转换。(从代码< >非const >

以下是CPPreference中的一些部分:

隐式转换序列按以下顺序组成:

1) 零或一个标准转换序列

2) 零或一个用户定义的转换

3) 零或一个标准转换序列

我认为1)->2)或2)->3)转换顺序是常见的。 但是有一个例子是1)->2)->3)

这个呢:

struct X {
  X(int a) {}
};

const X x = 5.0;
首先是从
double
int
的标准转换,然后是从
int
X
的用户定义转换,然后是从
X
const X
的标准转换。(从代码< >非const <代码> >代码> const <代码>的资格调整是根据C++引用的标准转换。 我不是100%确定最后一次转换,也许我们可以说对象已经被构造成const?我们也可以使用
volatile
代替
const

void-fun(constx);乐趣(5.0)