Boost智能阵列无效

时间:2016-08-31 15:25:44

标签: linux boost shared-ptr

我有一个代码可以与Boost 1.49正确编译。我将升级升级到1.61,现在我面临的错误如下:

  

错误:没有用于调用boost :: shared_array :: shared_array(unsigned char)的匹配函数   Boost / boost / smart_ptr / shared_array.hpp:56:注意:候选者是:boost :: shared_array :: shared_array()[with T = unsigned char]   Boost / boost / smart_ptr / shared_array.hpp:45:注意:boost :: shared_array :: shared_array(const boost :: shared_array&)

代码snippate就像

boost::shared_array<uint8_t> val;
constructor():val(0){}

可能的解决办法是什么?

我目前的设置是在具有GCC 4.1版的Linux机器上。

1 个答案:

答案 0 :(得分:2)

您需要升级编译器。任何最新版本的boost都不支持4.1。

支持的组合上的代码段没有问题:

<强> Live On Coliru

#include <boost/smart_ptr/shared_array.hpp>

struct x {
    boost::shared_array<uint8_t> val;
    x() : val(0) {}
};

int main() {
    x x;
}

来自supported compilers页面:

  

Linux操作系统。 GCC 4.5及更新版本。旧版本也可以使用,但未经过测试。

  

不支持以下编译器/平台,可能无法编译库:

     

...

     
      
  • GCC 4.2及更早版本。
  •