如何沉默"其类型使用匿名命名空间[-Werror]" gcc版本4.8.2

时间:2016-06-09 10:05:07

标签: c++ gcc boost gcc-warning

在我的一个项目头文件中,inline方法中包含以下行

typedef boost::archive::iterators::transform_width<boost::archive::iterators::binary_from_base64<      boost::archive::iterators::remove_whitespace<std::string::const_iterator>>, 8, 6> Base64ToBin;

当我用gcc 4.8.2编译它时,我收到以下错误:

  

错误:'boost :: archive :: iterators :: remove_whitespace&lt; __ gnu_cxx :: __ normal_iterator&gt; &gt;'有一个字段'boost :: archive :: iterators :: remove_whitespace&lt; __ gnu_cxx :: __ normal_iterator&gt; &gt; ::',其类型使用匿名命名空间[-Werror]

我真的很努力,但无法解决这个问题,同样来自link1link2看起来这是gcc较低版本的问题。有人可以建议如何使这个警告保持沉默或者克服这个警告。我正在使用-Werror标志编译。

1 个答案:

答案 0 :(得分:7)

这看起来像是一个正确的警告。因为代码位于标题中,所以它将包含在多个文件中,但匿名命名空间对于每个文件都是唯一的。这意味着该类型无处不在。

解决方案:将相关代码移动到.cpp文件。