我有很多功能如下的代码:
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)。
我找不到启用该功能的警告会对我们有所帮助,并且Google很难做到这一点,因为人们经常class A { void A::method(void) {} };
犯错(并且g ++抓住了这一点,因为它不符合标准)。我们的问题是按名称空间而不是按类型进行过度限定。
因此,我应该(至少)在上述编译器之一中启用什么警告?还有其他解决方案吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句