silverwolf silverwolf - 6 months ago 27
C++ Question

C++ Primer exercise 2.27 [5th ed.]

I am doing exercise 2.27 from C++ primer 5th edition and I am confused in this question:

Exercise: Which of the following initializations are legal? Explain why.

(c) const int i = -1, &r = 0;

I came to conclusion that r is illegal because this will be same as below:

const int i = -1;
int &r = 0;

But this github repo suggest that (c) is same as below:

const int i = -1;
const int &r = 0;

So, it contradicts to my answer, please provide me the correct answer.

P.S.: I am begineer in C++ language.


The type specifier (int) with the qualifier (const) belong to all declarators in the declaration

const int i = -1, &r = 0;

Thus declarators i and &r have the type specifier and qualifier const int. Moreover you may not write for example

int &r = 0;

because a temporary object (in this case expression 0) may not be bound to a non-constant reference.

However you could write

int &&r = 0;