在我的一个项目头文件中,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]
我真的很努力,但无法解决这个问题,同样来自link1和link2看起来这是gcc较低版本的问题。有人可以建议如何使这个警告保持沉默或者克服这个警告。我正在使用-Werror标志编译。
答案 0 :(得分:7)
这看起来像是一个正确的警告。因为代码位于标题中,所以它将包含在多个文件中,但匿名命名空间对于每个文件都是唯一的。这意味着该类型无处不在。
解决方案:将相关代码移动到.cpp文件。