2012-12-28 26 views
5

Tôi đang thử nghiệm với proto và phượng hoàng và một trong những ví dụ đồ chơi đầu tiên của tôi sụp đổ là gì và tôi không biết mình nên nhìn vào đâu. Vì ai đó trên kênh IRC#boost bảo tôi đảm bảo rằng cây biểu hiện phượng hoàng được sao chép sâu đầu tiên (để không có tham chiếu lơ lửng nào khi x được xây dựng), tôi bọc biểu thức bằng boost::proto::deep_copy. Tuy nhiên that didn't quite work. Nó vẫn treo khi biên dịch với cờ -O2works fine when omitting it.Tại sao ví dụ về đồ chơi proto/phoenix này gặp sự cố?

#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); 
} 

Tôi mong đợi điều này sẽ xuất ra hellobye.

+0

@llonesmiz xem http://liveworkspace.org/code/3Rdg5D$0.không có đầu ra –

+0

Kể từ đó, liveworkspace đã cập nhật tăng lên phiên bản 1.53, bây giờ mã của bạn hoạt động như mong đợi. đã được giải quyết trong 1,52. –

Trả lời

2

Có vẻ như đây là số bug in Phoenix đã biết. Tôi sẽ tránh sử dụng phoenix::switch_ cho đến khi điều này được sắp xếp. Thật không may, người bảo trì Phoenix dường như bận rộn với những thứ khác trong những ngày này. :-(

Các vấn đề liên quan