以下是代码(来自http://www.boost.org/doc/libs/1_52_0/doc/html/container/move_emplace.html)
#include <boost/container/list.hpp>
#include <cassert>
class non_copy_movable
{
non_copy_movable(const non_copy_movable &);
non_copy_movable& operator=(const non_copy_movable &);
public:
non_copy_movable(int = 0) {}
};
int main ()
{
using namespace boost::container;
list<non_copy_movable> l;
non_copy_movable ncm;
l.emplace(l.begin(), 0);
assert(l.size() == 1);
l.emplace(l.begin());
assert(l.size() == 2);
return 0;
}
我有编译问题。我试过了:
g++ 2.cpp -o 2 -I /usr/include/boost
以及其他组合,但这是错误的。
错误:
2.cpp:1:36: error: boost/container/list.hpp: No such file or directory
2.cpp: In function ‘int main()’:
2.cpp:13: error: ‘boost’ has not been declared
2.cpp:13: error: ‘container’ is not a namespace-name
2.cpp:13: error: expected namespace-name before ‘;’ token
2.cpp:14: error: ‘list’ was not declared in this scope
2.cpp:14: error: expected primary-expression before ‘>’ token
2.cpp:14: error: ‘l’ was not declared in this scope
我在路径中有“提升包含”: / usr / include目录/升压 在/ usr / lib中没有任何与boost相关的东西。 我使用这个命令在ubuntu上安装了boost:
sudo apt-get install libboost-all-dev
你有一些针对助推程序的通用编译吗? 另一个程序也用c ++编写,使用boost我正常编译而没有错误:
g++ 1.cpp -o 1
./1
答案 0 :(得分:0)
大多数boost都是仅限标头的库,所以如果你在/ usr / lib中没有看到很多,如果有任何boost库,我并不感到惊讶。
那就是说,我认为你的包含路径设置是错误的。你试图包括boost / container / list.hpp,但是你的include路径已经包含了“boost”。除非库正在安装/ usr / include / boost / boost,否则您需要从include路径或#include行中删除“boost”。我的偏好是将其从包含路径中删除,因为像#include <boost/container/list.hpp>
这样的语句比#include <container/list.hpp>
更有用。