我有一个代码可以与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机器上。
答案 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及更早版本。