我有很多功能如下的代码:
namespace Foo { namespace Bar { namespace Baz {
class MyType {};
Foo::Bar::Baz::MyType func(Foo::Bar::Baz::MyType const& param);
}}}
由于MyType
没有任何相互矛盾的定义,因此可以轻松简化:
namespace Foo { namespace Bar { namespace Baz {
class MyType {};
MyType func(MyType const& param);
}}}
我们通过在我们庞大而广泛的代码库中删除这些类型的事件来保存(令人尴尬的数量)文本空间。但是,由于我们是通过vgrep进行的,所以它很慢并且容易出错。
理想情况下,会有编译器警告。我们的代码库分别在三个不同的平台(Windows,Linux和Mac)上支持三种不同的编译器(MSVC,g ++和Clang)。
我无法找到警告以启用这对我们有帮助,因为人们很多地犯了class A { void A::method(void) {} };
错误(并且g ++抓住了这个,因为它不符合标准),因此谷歌很难。我们的问题是 namespace 过度资格,而不是 type 。
那么,我应该在(至少)上面的一个编译器中启用什么警告?还有其他解决方案吗?