Debugging with gdb and Boost abstractions

Layers of abstractions by Boost make it in part quite difficult to inspect specific fields inside icinga2 debugging sessions with gdb.

For instance if I hit a breakpoint at lib/icinga/clusterevents.cpp:937, how can I then inspect the hostname of the first endpoint of the zone referred to by origin->FromZone’? In other words: What exact print command would do the job?

The following seems to work (Holy Cow!):

print ((origin.px)->FromZone.px)->GetEndpoints()
print ((((boost::intrusive_ptr<icinga::Endpoint>)0x7fabc000b760).px)
  .TypeInstance.px)->GetFieldInfo(1)
print (((boost::intrusive_ptr<icinga::Endpoint>)0x7fabc000b760).px)
  ->GetField(1).'operator icinga::String'()

0x7fabc000b760 is the first element in a std::set according to the first print statement; 1 is the field index of "name" according to the second print statement)

A single, simpler expression of a kind that could e.g. also serve in conditional breakpoints would still be much appreciated.