问题标签 [boost-phoenix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Boost phoenix 或 lambda 库问题:从 std::vector 中删除元素
我最近遇到了一个问题,我认为 boost::lambda 或 boost::phoenix 可以帮助解决,但我无法正确使用语法,所以我用了另一种方式。我想要做的是删除“字符串”中小于一定长度而不是另一个容器中的所有元素。
这是我的第一次尝试:
我最终是如何做到的:
c++ - boost lambda 或 phoenix 问题:使用 std::for_each 对容器的每个元素进行操作
我在清理一些旧代码时遇到了问题。这是功能:
我感兴趣的是将 for 循环清理为 lambda 表达式,但很快就陷入了如何将正确的参数传递给 get_connectivity_data 的问题。get_connectivity_data 通过引用获取 std::vector 并用一些数据填充它。输出包含每个“块”的 std::vector。
基本上我的结论是,让我的代码保持原样更容易、更简洁、更短。
编辑:
因此,正如我所设想的那样,对我的问题最接近的答案是:
然而该代码无法编译,我对代码进行了一些修改以使其编译,但我遇到了 2 个问题:
- _ 1 是一个智能 ptr,std::distance 对它不起作用,我想我需要使用 &chunks[0] 作为开始
- 由于 _ 1 是一个智能指针,我不得不这样做: &chunk_vec_t::value_ type::ValueType::get_connectivity_data 导致 VC9 编译器崩溃...
关于 zip_ 迭代器的答案看起来不错,直到我进一步阅读并发现对于这种特定用途,所需的额外代码量很大(绑定这个和那个等)。
编辑2:
我找到了一个可接受的解决方案,它的无关语法低且清晰,我在此处和下面发布了该解决方案。
c++ - Boost::bind 和 Boost Phoenix::bind 有什么区别?
Boost::bind 和 Boost Phoenix::bind 有什么区别?
c++ - boost phoenix::bind 编译时出错
我正在使用 phoenix::bind 并收到此错误消息:
错误 C2039:“绑定”:不是“凤凰”的成员
我使用绑定和错误指向的代码行是:
phoenix::bind( &OptionalInputPort::eraseDataEditor ) ( phoenix::var( *optionalPort ) )
我不知道是什么问题。
phoenix include 是这一行:#include boost/spirit/home/phoenix.hpp
谢谢。
c++ - boost文件的编译错误
我在使用 boost 库编译代码时遇到很多错误,主要是在我使用 Spirit 命名空间时。这些错误是 boost 文件上的语法错误,例如:
boost/spirit/home/classic/dynamic/lazy.hpp(33):错误 C2143:语法错误:缺少';' 在'<'之前
或者
boost/spirit/home/classic/dynamic/lazy.hpp(33):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数
或者
boost/spirit/home/classic/utility/grammar_def.hpp(104) : error C2039: 'nil_t' : is not a member of 'boost::phoenix'
我正在从 Visual Studio 6 迁移到 Visual Studio 2008 Express,并从最古老的 boost 版本之一迁移到最新版本。
我想知道有什么问题。我认为问题不能出在 boost 库中。
c++ - C++ 中的函数式数据结构
有谁知道 C++ 数据结构库提供熟悉的 STL 结构的功能(又名不可变,或 FP 意义上的“持久”)等价物?
“功能性”是指对象本身是不可变的,而对这些对象的修改会返回与父对象共享相同内部结构的新对象。
理想情况下,这样的库将类似于 STL,并且可以与 Boost.Phoenix 很好地配合使用(注意——我实际上并没有使用过 Phoenix,但据我所知,它提供了许多算法但没有数据结构,除非进行延迟计算的更改到现有的数据结构计数 - 是吗?)
c++ - boost lambda 与 phoenix
我最近开始研究 boost phoenix,作为 lambda 的替代品。phoenix 是 lambda 的完全替代品,还是 phoenix 不提供某些 lambda 功能?凤凰成熟了吗?有什么我应该知道的吗?
我的主要兴趣是运算符组合,控制语句和强制转换不那么重要
谢谢
c++ - 凤凰城中的 C++ boost::lambda::ret 等价物
Boost lambda 允许使用ret<T>
模板覆盖推导的返回类型。我曾尝试在 phoenix 中搜索等价物,但找不到。
凤凰有等价物吗?我知道如何制作自己的替代品,但我宁愿不这样做。谢谢你
c++ - 如何使用带有 boost::transform_iterator 的凤凰表达式?
<更新>像往常一样,这个问题是错误的。实际的问题是:为什么transform_iterator 不使用常规的result_of<> 元函数来确定返回类型,而不是直接访问UnaryFunc::result_type。发布了解决方法的答案。 </更新>
具体来说,有没有办法让 phoenix 表达式result_type
按照 std::unary_function 概念的预期公开类型?boost::transform_iterator 似乎期待这一点,从查看它的 src 来看,我没有看到一个简单的解决方法。
这是一些重现我遇到的问题的代码:
编译此错误消息的相关部分是(gcc 4.3.4,boost 1.43):
我对 boost::lambda (缺少result_type
)有同样的问题。我以为我在过去看到过 make_transform_iterator 和 lambda 的类似用法,现在我想知道我是否只是想象它。
phoenix 或 lambda 中是否有提供的包装器或其他一些机制来公开result_type
?
boost - 使用自定义属性解析提升 Spirit 规则
我正在编写一个 Boost Spirit 语法来将文本解析为这些结构的向量:
这个语法有这样的规则:
然而,实际的语法pairSequence
是这样的:
我希望这个语法产生一个等于双精度并Pair
等于某个常数的值。我想做这样的事情:a
b
当然,上面没有编译。我尝试向 中添加构造函数Pair
,但仍然出现编译错误(没有匹配函数调用 'Pair::Pair(const boost::phoenix::actor >&, double)')。