// conversion constructors
template <class PacketType>
-prefix_ senf::Packet::Packet(ConcretePacket<PacketType> packet)
+prefix_ senf::Packet::Packet(ConcretePacket<PacketType> const & packet)
: packet_(packet.ptr())
{}
prefix_ bool senf::Packet::is()
const
{
- return ptr()->is<typename OtherPacket::type>();
+ return valid() && ptr()->is<typename OtherPacket::type>();
}
template <class OtherPacket>
template <class PacketType>
prefix_ senf::ConcretePacket<PacketType>
-senf::ConcretePacket<PacketType>::createAfter(Packet const & packet, size_type size,
+senf::ConcretePacket<PacketType>::createAfter(Packet const & packet, size_type size,
senf::NoInit_t)
{
return ConcretePacket(interpreter::createAfter(packet.ptr(), size, senf::noinit));
// private members
template <class PacketType>
-prefix_ senf::ConcretePacket<PacketType>::ConcretePacket(typename interpreter::ptr packet_)
+prefix_ senf::ConcretePacket<PacketType>::ConcretePacket(typename interpreter::ptr const & packet_)
: Packet(packet_)
{}