X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPackets%2FPacket.cti;h=0b70b19eeeb20ab1fadab48b9b13130d447251b2;hb=refs%2Fheads%2Fmaster;hp=a42856540a8c0a5c78f02b63d4d9e3988af333e0;hpb=51b24c3227717ce5ad8111a99c2d7eea5fa0bd8d;p=senf.git diff --git a/senf/Packets/Packet.cti b/senf/Packets/Packet.cti index a428565..0b70b19 100644 --- a/senf/Packets/Packet.cti +++ b/senf/Packets/Packet.cti @@ -59,7 +59,10 @@ template prefix_ bool senf::Packet::is() const { - return valid() && ptr()->is(); + // ensure that the template class is included in the corresponding object file when linking: + { static typename PacketInterpreter::factory_t _ ( + PacketInterpreter::factory()); (void) _;} + return valid() && typeId() == typeIdValue(); } template @@ -334,7 +337,7 @@ prefix_ senf::Packet senf::ConcretePacket::next(NoThrow_t) PacketInterpreterBase::ptr p (Packet::ptr()->next()); if (p) return Packet(p); PacketInterpreterBase::optional_range r (type::nextPacketRange(*this)); - return (r && ! r->empty()) ? getNext(r) : Packet(); + return (r && ! r->empty()) ? Packet(getNext(r)) : Packet(); } // private members