Deferencing pointer leads to using the value of the object indirectly. But I've never really understood what does the "using" means. I started to think the question until my compiler yield an error for the following code
int i = 0, *pi = &i;
decltype(*pi) c; // error: 'c' declared as reference but not initialized.
I looked at the error for a very long time and searched some questions I can only give out the following arguments. I don't know if they are correct or not.
Arguments 1:
1) *p
is an expression that is not a variable (or non-variable expression)
2) dereferencing pointer expression yields a reference, we are in fact using a reference to access the value of the object
Arguments 2:
the dereferencing expression only for which decltype
returns a reference, it is not a general case
Please points out any incorrectness or inaccurate descriptions of the above arguments.