gpt4 book ai didi

c++ - 无法编译最简单的 Phoenix lambda

转载 作者:行者123 更新时间:2023-11-30 01:59:10 25 4
gpt4 key购买 nike

我目前正在尝试编译以下非常简单的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

我在带有 Boost 1.53.0 的 Windows XP 上使用 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!!")

两者都可以编译。

关于c++ - 无法编译最简单的 Phoenix lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16519886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com