Sto sperimentando con proto e fenice e quale è uno dei miei primi esempi di giochi in crash e non ho idea di dove dovrei guardare. Dal momento che qualcuno sul canale #boost IRC mi ha detto di assicurarmi che l'albero delle espressioni di phoenix sia stato prima copiato in profondità (in modo che non ci siano riferimenti pendenti quando è stato costruito x
), ho avvolto l'espressione con boost::proto::deep_copy
. Tuttavia that didn't quite work. Si blocca ancora quando compilato con il flag -O2
e works fine when omitting it.Perché questo esempio di giocattolo proto/fenice si blocca?
#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);
}
Mi aspetto che venga emesso hellobye
.
@llonesmiz vedi http://liveworkspace.org/code/3Rdg5D$0. Non c'è uscita –
Da allora, lo spazio di animazione ha aggiornato l'aggiornamento alla versione 1.53, ora il tuo codice funziona come previsto. è stato risolto in 1.52. –