[英]Boost::accumulators initialization failing on mac OSX Yosemite
I am currently trying to use Boost::accumulators, but getting compilation error while initializing in the constructor. 我目前正在尝试使用Boost :: accumulators,但是在构造函数中初始化时遇到编译错误。 Please check the class details below.
请检查下面的课程详细信息。
Environment:
Mac OSX Yosemite
G++ version:
4.2.1
Boot Version: 1.55
Code: 码:
class test
{
public:
test();
test(unsigned char windowSize=5): acc(tag::rolling_window::window_size=windowSize){}
protected:
accumulator_set<unsigned short, stats<tag::rolling_mean > > acc;
private:
};
Error: 错误:
/usr/local/boost/include/boost/accumulators/statistics/rolling_window.hpp|49|error: no viable overloaded operator[] for type 'const boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<boost::accumulators::tag::accumulator, boost::accumulators::accumulator_set<unsigned short, boost::accumulators::stats<boost::accumulators::tag::rolling_mean, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, void> >, boost::parameter::aux::empty_arg_list>'|
-----------
/usr/local/boost/include/boost/parameter/aux_/arg_list.hpp|346|note: candidate function not viable: no known conversion from 'keyword<tag::rolling_window_size>' to 'const keyword<key_type>' for 1st argument|
-------------------
You may lack some includes, leading to incomplete types in the initializer ET: 您可能缺少一些包含项,导致初始化程序ET中的类型不完整:
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
#include <boost/accumulators/statistics/rolling_window.hpp>
#include <boost/accumulators/statistics/rolling_mean.hpp>
#include <iostream>
namespace ba = boost::accumulators;
class test
{
public:
test();
test(unsigned char windowSize=5): acc(ba::tag::rolling_window::window_size = windowSize){}
protected:
ba::accumulator_set<unsigned short, ba::stats<ba::tag::rolling_mean > > acc;
private:
};
int main()
{
}
Thanks for your message. 感谢您的留言。 I have already included all the required files, but it looks like having an overloaded constructors might be causing this.
我已经包含了所有必需的文件,但是看起来像是重载的构造函数可能会导致这种情况。 I have removed all the constructors and kept only one with initialization list and it started working.
我删除了所有构造函数,只保留了一个初始化列表,它开始工作。 Thanks again.
再次感谢。
Code: 码:
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
#include <boost/accumulators/statistics/rolling_window.hpp>
#include <boost/accumulators/statistics/rolling_mean.hpp>
#include <iostream>
namespace ba = boost::accumulators;
class test
{
public:
test(unsigned char windowSize=5): acc(ba::tag::rolling_window::window_size = windowSize){}
protected:
ba::accumulator_set<unsigned short, ba::stats<ba::tag::rolling_mean > > acc;
private:
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.