5

私はプロトとフェニックスを実験していますが、最初のおもちゃの例の1つがクラッシュし、どこを見ればよいのかわかりません。#boost IRCチャネルの誰かが、フェニックス式ツリーが最初にディープコピーされるように(x構築時にぶら下がっている参照が残らないように)指示されたので、式をでラップしましたboost::proto::deep_copy。しかし、それはうまくいきませんでした-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);
}

これが出力されることを期待していますhellobye

4

1 に答える 1

2

これはPhoenixの既知のバグのようです。phoenix::switch_これがソートされるまで、私は使用を避けます。残念ながら、フェニックスのメンテナは最近他のことに忙しいようです。:-(

于 2012-12-30T19:02:57.043 に答える