I always thought that a reference would be subjected to an lvalue-to-rvalue-conversion, as any other glvalue, when used in an expression. Nevertheless, it seems like, every time a reference is used in an expression, it is handled in bullet point (2.9) of [expr.const]/2 instead of bullet point (2.7) (in C++14, or C++1z).
Take for example the reference r below, used to initialize variable j. Is it subjected to an lvalue-to-rvalue-conversion?
const int i = 1; constexpr int& r = i constexpr int j = r; According to this answer the reference r is handled in bullet point (2.9) of [expr.const]/2 and not in bullet point 2.7, as I would expect. Why is this?
r? Could you explain? I mean why isn't one of the sub-bullets in (2.7) satisfied?