我有很多代码的功能都像这样:
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 进行操作,所以进展缓慢且容易出错。
理想情况下,编译器应该会发出警告。我们的代码库在三个不同的平台上支持三种不同的编译器(MSVC、g++ 和 Clang),分别为 Windows、Linux 和 Mac。
我找不到任何有用的警告来帮助我们解决问题,而且很难进行谷歌搜索,因为人们经常犯
class A { void A::method(void) {} };
错误(而 g++ 会捕获此类错误,因为它不符合标准)。我们的问题是由于 namespace 的过度限定而不是 type。那么,在上述至少一个编译器中,我应该启用哪个警告呢?还有其他解决方案吗?