Интервьюер показал мне такой код и спросил меня, будет ли он компилироваться и давать мои рассуждения. Я сказал ему очень уверенно, что он не будет компилироваться, потому что 10 является константой, и вы не можете назначить константу неконстантной ссылке (например, int & b = 10 не будет компилироваться), также _a является временной переменной, и она также рассматривается const, опять же, вы не можете использовать неконстантную ссылку для ссылки на константную переменную.
Однако после того, как я пришел к своему удивлению, я нашел, что он отлично компилируется со всеми возможными компиляторами. Кроме того, я не получил работу. Какая часть моего понимания пошла не так?
class A {
int& a;
public:
A(int _a):a(_a) {}
};
int main() {
A a(10);
}