Skip to content

RootUtils: Workaround for pyroot __pair_base issue.

In gcc8, std::pair derives from the (empty) base class std::__pair_base. When ROOT makes dictionaries, it likes to strip std:: qualifiers. When it then tries to look up cling information for a TClass, if the lookup fails, it tries again with the std:: reinserted for all STL classes (with TClassEdit::InsertStd()). However, that doesn't work for __pair_base, because it's not a class that ROOT knows about. The upshot is that we see errors like:

Error in TClass::LoadClassInfo: no interpreter information for class __pair_base<unsigned int,string> is available even though it has a TClass initialization routine.

We work around this by hooking into ROOT's TClass creation. If we see a std::pair class, we erase the base class information from its TClass.

Merge request reports