Open
Description
Check duplicate issues.
- Checked for duplicates
Description
In a non-C++-modules build, TClassEdit::ResolveTypedef()
is unable to resolve a typedef that aliases a fundamental data type.
However, given a non-static class member of the same type, TDataMember::GetTrueTypeName()
, correctly provides the expected information. This seems to be inconsistent behavior in ROOT meta.
Reproducer
For instance, consider the typedef
and struct
declarations below.
namespace SG { typedef uint32_t sgkey_t; }
struct PackedParameters {
SG::sgkey_t m_sgkey;
};
In this case, the return value of ResolveTypedef()
/ GetTrueTypeName()
is inconsistent as shown below.
root [1] TClassEdit::ResolveTypedef("SG::sgkey_t")
(std::string) "SG::sgkey_t"
root [2] auto klass = TClass::GetClass("PackedParameters");
root [3] auto member = klass->GetDataMember("m_sgkey");
root [4] member->GetFullTypeName()
(const char *) "SG::sgkey_t"
root [5] member->GetTrueTypeName()
(const char *) "unsigned int"
ROOT version
master
Installation method
build from source
Operating system
ArchLinux x86_64
Additional context
No response