无法获得最简单的Phoenix lambda来编译
Cannot get simplest Phoenix lambda to compile
我目前正试图获得以下非常简单的boost::phoenix::lambda
编译:
#include <iostream>
#include <boost/phoenix/scope.hpp>
int main() {
boost::phoenix::lambda[std::cout << "Lambda!!"]();
}
然而,这会产生大量的错误(在这里发布太多),没有一个对我有任何意义。以下是编译器输出的摘录:
error: 'std::ios_base::ios_base(const std::ios_base&)' is private
within this context
error: initializer for
'boost::proto::exprns_::basic_expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::phoenix::vector0<> >, 0l>::proto_child0
{aka boost::phoenix::vector0<>}' must be brace-enclosed
我在Windows XP和Boost 1.53.0上使用MinGW 4.7.2编译这些。我做错了什么?
首先,总是
#include <boost/phoenix/phoenix.hpp>
除非你知道你在做什么。
其次,你需要让operator<<
的任意一个操作数为凤凰终端,否则,它将只是
std::cout << "Lambda!!"
是std::ostream&
型的表达式…
现在,你可以做任何事情,真的,例如:
phx::ref(std::cout) << "Lambda!!"
或
std::cout << phx::val("Lambda!!")
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 可组合的lambda/std::函数与std::可选
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 如何将lambda作为模板类的成员函数参数
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 在 lambda 捕获中声明的变量的类型推导
- 我可以将调用类的"this"传递给 lambda 函数吗?
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 模板函数指针和lambda
- 两组使用lambda函数的大括号
- 使lambda不可复制/不可移动
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- phoenix::lambda 函数的执行顺序是什么?
- boost::bind、boost::lambda::bind和boost::phoenix::bind的区别
- 无法获得最简单的Phoenix lambda来编译
- 使用boost::lambda或boost::phoenix与std::find_if
- 在boost::phoenix::lambda中调用函数
- Boost Lambda/Phoenix-如何处理返回另一个Lambda的Lambda
- boost lambda或phoenix问题:使用std::for_each对容器的每个元素进行操作