Points often cited as disadvantages of references include:
- There's nothing that clearly distinguishes them from regular variables at the point of use. They can therefore obscure the fact that you're not passing by value or mutating a local/member variable (particularly if you don't have good IDE support, and good IDE support for C++ is damn hard for some environments/toolchains/targets)
- There is no concept of a null reference, which can create friction with interfaces that use NULL for optional parameters
These points are also often cited as crucial advantages of references. So it goes.