提升凤凰编译错误
Boost Phoenix compilation error
我正在尝试使用Boost Phoenix。我的目标是让 stl 算法采用容器而不是迭代器的范围,如前所述 这里。 但是,我在一个相当简单的代码上遇到了一堆错误:
#include <boost/phoenix/stl/algorithm.hpp>
#include <iostream>
#include <vector>
#include <algorithm>
namespace phx = boost::phoenix;
int main(int argc, char ** argv) {
std::vector<int> my_arr{ 0, 1, 2, 3 };
phx::for_each(my_arr, [](int i){std::cout << i << std::endl; });
}
我在两个平台(Win7,Ubuntu)上尝试过,否则我会使用Boost的多个部分。
错误消息相当长,所以我将它们放在文件中:
MVC++ 2013 年 11 月,提升 1.55
G++4.7.2,提升 1.53
除了模板未正确编译之外,我真的不能犯很多错误,但我想我错过了一些相当简单的东西。
我认为您使用了错误的提升库。凤凰算法是惰性函数,此处对此进行了解释。因此,如果调用phoenix::for_each
,它不会执行任何操作,而是返回一个函数对象,该对象在调用后遍历该范围。如果您只想在范围上使用 STL(和其他)算法,您可以使用 boost.range 库:
#include <boost/range/algorithm/for_each.hpp>
#include <iostream>
#include <vector>
namespace rng = boost::range;
int main(int argc, char ** argv) {
std::vector<int> my_arr{ 0, 1, 2, 3 };
rng::for_each(my_arr, [](int i){std::cout << i << std::endl; });
}
您只需要在包含其他任何内容之前包含phoenix
核心。
#include <boost/phoenix/core.hpp>
#include <boost/phoenix/stl/algorithm.hpp>
... rest of your program
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译