sajty/ember — comment on commit bdf80d1bece1cc5512eebeb41a6e962b5c3b2557
File: src/services/input/Input.cpp line 189
By sajty:

Using friend is not good idea because it breaks the object-oriented theory, where private level can be accessed only on that class and nowhere else.
Also UML is not supporting it, so you can't model a program in UML which has friend in it.
Even the MSVC runtime is using "_" prefix, so visual studio don't really likes it.

The other reason is performance issues in MSVC:
http://msdn.microsoft.com/en-us/library/bb384968%28v=vs.90%29.aspx