Question

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)?

Was it helpful?

Solution

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.

OTHER TIPS

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&'

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top