(Following my recent question, and another question.)
[expr.const]/4 says that:
A converted constant expression of type T is an expression, im
First, which expression does "the converted expression" (emphased) refer to?
Implicit conversion introduces a correspondingly initialized temporary:
T e = /* original expression */;
e
is the "converted expression". T = int
in your case.
then which expression should be constant expression?
e
.
Moreover, foo
and the conversion operator function that has been implicitly invoked must be constexpr functions as per [expr.const]/(2.2).
Second, what stage of the whole process does "reference binding" refer to?
When T
is a reference type, that reference - e
in the above example - shall bind directly. No binding necessitated inside the expression or before it is of interest.