5
我正在試驗proto和phoenix,我的第一個玩具例子之一是什麼,我不知道我應該在哪裏看。由於#boost IRC頻道上的某個人告訴我要確保首先深度複製了phoenix表達式樹(以便在構建x
時沒有懸空的引用),我用boost::proto::deep_copy
包裝了表達式。但是that didn't quite work。編譯時使用-O2
標誌和works fine when omitting it時仍然崩潰。爲什麼這個proto /鳳凰玩具的例子會崩潰?
#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);
}
我預計這會輸出hellobye
。
@llonesmiz看到http://liveworkspace.org/code/3Rdg5D$0。沒有輸出 –
從那時起,liveworkspace升級到版本1.53,現在你的代碼可以按預期工作了。我相信這個問題在1.52解決了。 – 2013-02-19 16:48:54