HepMC::is_smart_ptr< std::shared_ptr< T > > Node1 HepMC::is_smart_ptr < std::shared_ptr< T > > Node2 std::true_type Node2->Node1