#ifndef X66AJaG3Qy6m9CIBTEKhiCYWag0 #define X66AJaG3Qy6m9CIBTEKhiCYWag0 #include "pla_evolve.hpp" namespace EvolveImpl { template struct Evolve { template void operator() (PC &pc, const Time ct, const Ptr id) { typedef typename QuantChild::type Child; // first evolve childs for (Ptr i : id.childs()) Evolve()(pc, ct, i); // then self pc.cast(PLA_Evolve{ContinuousContext{id}, ct}); } }; template<> struct Evolve { template void operator() (PC &pc, const Time ct, const Ptr id) { // no childs -> evolve only self pc.cast(PLA_Evolve{ContinuousContext{id}, ct}); } }; } using EvolveImpl::Evolve; #endif // X66AJaG3Qy6m9CIBTEKhiCYWag0