我在LinuxMint17.3 Rosa上安装了boost (1.60.0),并尝试使用以下命令用gcc编译器(v4.8.4 64位)编译boost累加器示例(guide.html):
>g++ -o exaccu exaccumulator.cpp -I/usr/local/lib/boost_1_60_0/编译失败,从以下开始的错误消息列表很长:
>exaccumulator.cpp: In function ‘int main()’:
>exaccumulator.cpp:22:32: error: ‘accumulators’ has not been declared
>std::cout << "Moment: " << accumulators::moment<2>(acc) << std::endl;在查找accumulators.hpp之后,我将accumulators::moment<2>改为moment<2>。这就成功了,编译成功了(使用相同的标志)。或者,用"boost::accumulators::moment<2>“作为”累加器“的前缀也有效。因此,我的问题是:我的boost安装有什么问题吗?还是在教程中的示例中有错误?
发布于 2016-06-09 16:54:39
这似乎确实是个错误。
您可以使用整个boost命名空间(坏主意)来编译示例:
using namespace boost;
accumulators::moment<2>(acc);或者,就像您已经做的那样,只需删除accumulators::规范程序,只使用namespace boost::accumulators;。
或者只需指定它的完全限定名:boost::accumulators::moment<2>(acc)。
https://stackoverflow.com/questions/37731872
复制相似问题