dragosb
dragosb

Reputation: 623

Function pass by reference

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

Answers (2)

marcinj
marcinj

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

Sarfaraz Nawaz
Sarfaraz Nawaz

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

Related Questions