Anonymous namespace should be forbidden in header files even for the
forward declarations:
* As declarations defined in anonymous namespace are internal linkage, each
translation unit which includes this header will get unique copy, which
wastes space.
* It is easy to violate C++ ODR rule.
Consider the following "foo.h":
```cpp
namespace { class Foo; }
class Bar {
public:
Foo* getFoo();
Foo* foo;
}
```
If the 'foo.h' is included in multiple `.cc` files, the compiler will
put `Foo` into a different anonymous namespace in each `.cc`, which
means there are different definitions of `Foo` in the program (a
violation of the ODR).
|
||
|---|---|---|
| .. | ||
| inspectable_web_contents_view_views.cc | ||
| inspectable_web_contents_view_views.h | ||
| views_delegate.cc | ||
| views_delegate.h | ||