我正在试验原型和凤凰,我的第一个玩具示例是什么崩溃,我不知道我应该在哪里看。由于#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);
}
。
答案 0 :(得分:2)
看起来这是一个已知的bug in Phoenix。在排序之前我会避免使用phoenix::switch_
。不幸的是,凤凰城的维护者现在似乎忙于其他事情。 : - (