为什么这个proto / phoenix玩具示例会崩溃?

时间:2012-12-28 02:36:32

标签: c++ boost-phoenix boost-proto

我正在试验原型和凤凰,我的第一个玩具示例是什么崩溃,我不知道我应该在哪里看。由于#boost IRC频道上有人告诉我要确保首先对凤凰表情树进行深度复制(以便在构造x时没有悬空引用),我将表达式包裹{{1} }。但是that didn't quite work。使用boost::proto::deep_copy标志和works fine when omitting it进行编译时,它仍然会崩溃。

-O2

我希望这会输出#include <boost/phoenix/phoenix.hpp> #include <boost/proto/deep_copy.hpp> #include <iostream> namespace bpr = boost::proto; int main(int argc, char **argv) { using namespace boost::phoenix; using namespace placeholders; auto x = bpr::deep_copy( switch_(arg1)[ case_<1>(std::cout << val("hello")), case_<2>(std::cout << val("bye")), default_(std::cout << val("default")) ]); x(1); x(2); }

1 个答案:

答案 0 :(得分:2)

看起来这是一个已知的bug in Phoenix。在排序之前我会避免使用phoenix::switch_。不幸的是,凤凰城的维护者现在似乎忙于其他事情。 : - (