Reputation: 623
Recently a c++ expert told me that :
void f(int &*r);
is a valid pass by reference example although I thought this is some kind of pointer to a reference which is illegal. From my knowledge the correct form for pass by reference is either form of the following:
void f1(int *&r);
void f2(int &r);
Can you explain the situation of the first example (function f)?
Upvotes: 5
Views: 237
Reputation: 50036
Its not allowed,
from C++ Standard 8.3.2/5:
There shall be no references to references, no arrays of references, and no pointers to references.
and also it does not compile, g++ outputs:
error: cannot declare pointer to 'int&'
Upvotes: 3
Reputation: 361732
The first one (pointer to reference) is illegal in all versions of C++. The rest two are legal.
The bottomline : Ignore Your Instructor — he/she doesn't know C++, at least in this case.
Upvotes: 8