LocInfoType {(clang::Type::TypeClass)TypeBits.TC, en}Type {*(clang::BuiltinType *)this} {*(clang::PointerType *)this} {*(clang::LValueReferenceType *)this} {*(clang::RValueReferenceType *)this} {(clang::ConstantArrayType *)this,na} {(clang::ConstantArrayType *)this,view(left)na} {(clang::ConstantArrayType *)this,view(right)na} {(clang::IncompleteArrayType *)this,na} {(clang::IncompleteArrayType *)this,view(left)na} {(clang::IncompleteArrayType *)this,view(right)na} {(clang::TypedefType *)this,na} {(clang::TypedefType *)this,view(cpp)na} {*(clang::AttributedType *)this} {(clang::DecayedType *)this,na} {(clang::DecayedType *)this,view(left)na} {(clang::DecayedType *)this,view(right)na} {*(clang::TemplateTypeParmType *)this} {*(clang::TemplateTypeParmType *)this,view(cpp)} {*(clang::SubstTemplateTypeParmType *)this} {*(clang::RecordType *)this} {*(clang::RecordType *)this,view(cpp)} {(clang::FunctionProtoType *)this,na} {(clang::FunctionProtoType *)this,view(left)na} {(clang::FunctionProtoType *)this,view(right)na} {*(clang::TemplateSpecializationType *)this} {*(clang::DeducedTemplateSpecializationType *)this} {*(clang::DeducedTemplateSpecializationType *)this,view(cpp)} {*(clang::InjectedClassNameType *)this} {*(clang::DependentNameType *)this} {*(clang::PackExpansionType *)this} {(clang::LocInfoType *)this,na} {(clang::LocInfoType *)this,view(cpp)na} {this,view(poly)na} {*this,view(cpp)} No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type Dependent{" ",sb} InstantiationDependent{" ",sb} VariablyModified{" ",sb} ContainsUnexpandedParameterPack{" ",sb} CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en} CachedLocalOrUnnamed CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}{" ",sb} FromAST No TypeBits set beyond TypeClass {*this, view(Dependent)}{*this, view(InstantiationDependent)}{*this, view(VariablyModified)} {*this, view(ContainsUnexpandedParameterPack)}{*this, view(Cache)}{*this, view(FromAST)} {*this,view(cmn)} {{{*this,view(poly)}}} (clang::Type::TypeClass)TypeBits.TC this,view(flags)na CanonicalType *(clang::BuiltinType *)this *(clang::PointerType *)this *(clang::LValueReferenceType *)this *(clang::RValueReferenceType *)this (clang::ConstantArrayType *)this (clang::IncompleteArrayType *)this *(clang::AttributedType *)this (clang::DecayedType *)this (clang::TemplateTypeParmType *)this (clang::SubstTemplateTypeParmType *)this (clang::RecordType *)this (clang::FunctionProtoType *)this (clang::TemplateSpecializationType *)this (clang::DeducedTemplateSpecializationType *)this (clang::InjectedClassNameType *)this (clang::DependentNameType *)this (clang::PackExpansionType *)this (clang::LocInfoType *)this ElementType {ElementType,view(cpp)} [{Size}] {ElementType,view(cpp)}[{Size}] Size (clang::ArrayType *)this {ElementType,view(cpp)} [] {ElementType,view(cpp)}[] (clang::ArrayType *)this {Decl,view(name)nd} {Decl} Decl *(clang::Type *)this, view(cmn) {PointeeType, view(cpp)} * PointeeType *(clang::Type *)this, view(cmn) {((clang::ReferenceType *)this)->PointeeType,view(cpp)} & *(clang::Type *)this, view(cmn) PointeeType {((clang::ReferenceType *)this)->PointeeType,view(cpp)} && *(clang::Type *)this, view(cmn) PointeeType {ModifiedType} Attribute={(clang::AttributedType::Kind)AttributedTypeBits.AttrKind} {(clang::Decl::Kind)DeclContextBits.DeclKind,en}Decl (clang::Decl::Kind)DeclContextBits.DeclKind,en FirstDecl (clang::Decl *)(NextInContextAndBits.Value & ~3) *this Field {{{*(clang::DeclaratorDecl *)this,view(cpp)nd}}} {*(clang::FunctionDecl *)this,nd} Method {{{*this,view(cpp)}}} Constructor {{{Name,view(cpp)}({*(clang::FunctionDecl *)this,view(parm0)nd})}} Destructor {{~{Name,view(cpp)}()}} typename class (not yet known if parameter pack) ... {(TypeSourceInfo *)(DefaultArgument.ValueOrInherited.Val.Value&~3LL),view(cpp)} {{InheritedInitializer}} = {this,view(DefaultArg)na} {*this,view(TorC)} {*this,view(MaybeEllipses)}{Name,view(cpp)} {this,view(Initializer)na} {*TemplatedDecl,view(cpp)} template{TemplateParams,na} {*TemplatedDecl}; TemplateParams,na TemplatedDecl,na {(clang::TypeSourceInfo *)(MaybeModedTInfo.Value & ~7LL),view(cpp)na} {(clang::TypedefNameDecl::ModedTInfo *)(MaybeModedTInfo.Value & ~7LL),view(cpp)na} {(TypeDecl *)this,view(cpp)nand} typedef {this,view(type)na} {this,view(name)na}; "Not yet calculated",sb (bool)(MaybeModedTInfo.Value & 2) (clang::TypeSourceInfo *)(MaybeModedTInfo.Value & ~7LL) (clang::TypedefNameDecl::ModedTInfo *)(MaybeModedTInfo.Value & ~7LL) (TypeDecl *)this,nd {(TypedefNameDecl *)this,view(name)nand} using {(TypedefNameDecl *)this,view(name)nand} = {(TypedefNameDecl *)this,view(type)nand} {Name} Kind={(UncommonTemplateNameStorage::Kind)Kind,en}, Size={Size} (UncommonTemplateNameStorage::Kind)Kind Size {Bits}, {this,view(cmn)na},{(OverloadedTemplateStorage*)this,na} {this,view(cmn)na},{(AssumedTemplateStorage*)this,na} {this,view(cmn)na},{(SubstTemplateTemplateParmStorage*)this,na} {this,view(cmn)na},{(SubstTemplateTemplateParmPackStorage*)this,na} {this,view(cmn)na} Bits (OverloadedTemplateStorage*)this (AssumedTemplateStorage*)this (SubstTemplateTemplateParmStorage*)this (SubstTemplateTemplateParmPackStorage*)this {(clang::TemplateDecl *)(Val.Value & ~3LL),view(cpp)na} {(clang::TemplateDecl *)(Val.Value & ~3LL),na} {(clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL),view(cpp)na} {(clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL),na} {(clang::QualifiedTemplateName *)(Val.Value & ~3LL),view(cpp)na} {(clang::QualifiedTemplateName *)(Val.Value & ~3LL),na} {(clang::DependentTemplateName *)(Val.Value & ~3LL),view(cpp)na} {(clang::DependentTemplateName *)(Val.Value & ~3LL),na} "TemplateDecl",s8b (clang::TemplateDecl *)(Val.Value & ~3LL) "UncommonTemplateNameStorage",s8b (clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL) "QualifiedTemplateName",s8b (clang::QualifiedTemplateName *)(Val.Value & ~3LL) "DependentTemplateName",s8b (clang::DependentTemplateName *)(Val.Value & ~3LL) Val {Storage,view(cpp)na} {Storage,na} Storage {Name,view(cpp)} {Name} implicit{" ",sb} {*this,view(implicit)nd} {*this,view(modifiers)}{Name,view(cpp)} {*this,view(modifiers)nd}struct {Name,view(cpp)} {*this,view(modifiers)nd}interface {Name,view(cpp)} {*this,view(modifiers)nd}union {Name,view(cpp)} {*this,view(modifiers)nd}class {Name,view(cpp)} {*this,view(modifiers)nd}enum {Name,view(cpp)} (clang::DeclContext *)this {decl,view(cpp)na} {*decl} *(clang::Type *)this, view(cmn) decl {(clang::TagType *)this,view(cpp)na} {(clang::TagType *)this,na} *(clang::TagType *)this {{{*Replaced,view(cpp)} <= {CanonicalType,view(cpp)}}} *(clang::Type *)this, view(cmn) *Replaced {ResultType,view(cpp)} {*(clang::QualType *)(this+1),view(cpp)}{*this,view(parm1)} , {*((clang::QualType *)(this+1)+1),view(cpp)}{*this,view(parm2)} , {*((clang::QualType *)(this+1)+2),view(cpp)}{*this,view(parm3)} , {*((clang::QualType *)(this+1)+3),view(cpp)}{*this,view(parm4)} , {*((clang::QualType *)(this+1)+4),view(cpp)}{*this,view(parm5)} , /* expand for more params */ ({*this,view(parm0)}) -> {ResultType,view(cpp)} ({*this,view(parm0)}) {this,view(left)na}{this,view(right)na} ResultType {*this,view(parm0)} FunctionTypeBits.NumParams (clang::QualType *)(this+1) *(clang::Type *)this, view(cmn) {OriginalTy} adjusted to {AdjustedTy} OriginalTy AdjustedTy {OriginalTy,view(left)} {OriginalTy,view(right)} {OriginalTy} (clang::AdjustedType *)this {TTPDecl->Name,view(cpp)} Non-canonical: {*TTPDecl} Canonical: {CanTTPTInfo} *(clang::Type *)this, view(cmn) {Decl,view(cpp)} Decl InjectedType *(clang::Type *)this, view(cmn) {NNS}{Name,view(cpp)na} NNS Name *(clang::Type *)this, view(cmn) {(IdentifierInfo*)Specifier,view(cpp)na}:: {(NamedDecl*)Specifier,view(cpp)na}:: {(Type*)Specifier,view(cpp)na}:: (NestedNameSpecifier::StoredSpecifierKind)((Prefix.Value>>1)&3) {Pattern} Pattern NumExpansions *(clang::Type *)this, view(cmn) {*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(poly)}{*this,view(fastQuals)} {*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(cpp)}{*this,view(fastQuals)} {*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(left)}{*this,view(fastQuals)} {*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(right)}{*this,view(fastQuals)} {" ",sb}const {" ",sb}restrict {" ",sb}const restrict {" ",sb}volatile {" ",sb}const volatile {" ",sb}volatile restrict {" ",sb}const volatile restrict Cannot visualize non-fast qualifiers Null {((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,na}{*this,view(fastQuals)} *this,view(fastQuals) ((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType {DeclInfo,view(cpp)na} {DeclInfo,na} DeclInfo *(clang::Type *)this, view(cmn) {Ty,view(cpp)} {Ty} Ty {(QualType *)&Ty,na} (QualType *)&Ty Data Not building anything Building a {LastTy} {Argument,view(cpp)} {Argument} {*(clang::QualType *)&TypeOrValue.V,view(cpp)} {(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en} template argument: {*(clang::QualType *)&TypeOrValue.V} {Args.Args[0]}{*this,view(arg1)} , {Args.Args[1]}{*this,view(arg2)} , {Args.Args[2]}, ... {Args.Args[0],view(cpp)}{*this,view(arg1cpp)} , {Args.Args[1],view(cpp)}{*this,view(arg2cpp)} , {Args.Args[2],view(cpp)}, ... {*this,view(arg0cpp)} {*this,view(arg0)} {(clang::Expr *)TypeOrValue.V,view(cpp)na} {(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en} *(clang::QualType *)&TypeOrValue.V (clang::Expr *)TypeOrValue.V Args.NumArgs Args.Args {((TemplateArgumentLoc*)Arguments.BeginX)[0],view(cpp)}{*this,view(elt1)} , {((TemplateArgumentLoc*)Arguments.BeginX)[1],view(cpp)}{*this,view(elt2)} , {((TemplateArgumentLoc*)Arguments.BeginX)[2],view(cpp)}{*this,view(elt3)} , {((TemplateArgumentLoc*)Arguments.BeginX)[3],view(cpp)}{*this,view(elt4)} , ... empty <{*this,view(elt0)}> Uninitialized {Arguments[0],view(cpp)}{*this,view(arg1)} , {Arguments[1],view(cpp)}{*this,view(arg2)} , {Arguments[1],view(cpp)}, ... <{*this,view(arg0)}> NumArguments NumArguments Arguments {Data[0],view(cpp)}{*this,view(arg1)} , {Data[1],view(cpp)}{*this,view(arg2)} , {Data[2],view(cpp)}, ... <{*this,view(arg0)}> Length Length Data {((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[0],view(cpp)}{*this,view(level1)} ::{((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[1],view(cpp)}{*this,view(level2)} ::{((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[2],view(cpp)}, ... {*this,view(level0)} TemplateArgumentLists {(clang::QualType *)Arg,view(cpp)na} Type template argument: {*(clang::QualType *)Arg} Non-type template argument: {*(clang::Expr *)Arg} Template template argument: {*(clang::TemplateName *)Arg Kind,en (clang::QualType *)Arg (clang::Expr *)Arg (clang::TemplateName *)Arg void bool char unsigned char wchar_t char16_t char32_t unsigned short unsigned int unsigned long unsigned long long __uint128_t char signed char wchar_t short int long long long __int128_t __fp16 float double long double nullptr_t {(clang::BuiltinType::Kind)BuiltinTypeBits.Kind, en} (clang::BuiltinType::Kind)BuiltinTypeBits.Kind {((clang::TemplateArgument *)(this+1))[0],view(cpp)}{*this,view(arg1)} , {((clang::TemplateArgument *)(this+1))[1],view(cpp)}{*this,view(arg2)} , {((clang::TemplateArgument *)(this+1))[2],view(cpp)}{*this,view(arg3)} {*((clang::TemplateDecl *)(Template.Storage.Val.Value))->TemplatedDecl,view(cpp)}<{*this,view(arg0)}> Can't visualize this TemplateSpecializationType Template.Storage TemplateSpecializationTypeBits.NumArgs (clang::TemplateArgument *)(this+1) *(clang::Type *)this, view(cmn) (CanonicalType.Value.Value != this) || TypeBits.Dependent *(clang::Type *)this,view(cmn) {CanonicalType,view(cpp)} {Template,view(cpp)} {Template} Template CanonicalType,view(cpp) (clang::DeducedType *)this Template {*(CXXRecordDecl *)this,nd}{*TemplateArgs} (CXXRecordDecl *)this,nd TemplateArgs {((llvm::StringMapEntry<clang::IdentifierInfo *>*)Entry)+1,sb} ((llvm::StringMapEntry<clang::IdentifierInfo *>*)Entry)+1,s (clang::tok::TokenKind)TokenID Empty {*(clang::IdentifierInfo *)(Ptr & ~PtrMask)} {{Identifier ({*(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}} {{ObjC Zero Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}} {{ObjC One Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}} {(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),view(cpp)na} C++ Constructor {{{(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),view(cpp)na}}} C++ Destructor {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}} C++ Conversion function {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}} C++ Operator {{*(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask)}} {*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask),view(cpp)} {{Extra ({*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask)})}} StoredNameKind(Ptr & PtrMask),en *(clang::IdentifierInfo *)(Ptr & ~PtrMask),na *(clang::IdentifierInfo *)(Ptr & ~PtrMask),na *(clang::IdentifierInfo *)(Ptr & ~PtrMask),na *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na *(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask),na (clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask),na {(CXXDeductionGuideNameExtra *)this,view(cpp)nand} {(CXXDeductionGuideNameExtra *)this,nand} C++ Literal operator C++ Using directive {(clang::detail::DeclarationNameExtra::ExtraKind)ExtraKindOrNumArgs,en}{" ",sb}{*this,view(cpp)} (CXXDeductionGuideNameExtra *)this ExtraKindOrNumArgs {Template->TemplatedDecl,view(cpp)} C++ Deduction guide for {Template->TemplatedDecl,view(cpp)na} {Type,view(cpp)} {Type} {Name} {(ParsedTemplateArgument *)(this+1),view(cpp)na}{this,view(arg1)na} , {((ParsedTemplateArgument *)(this+1))+1,view(cpp)na}{this,view(arg2)na} , ... {Name,na}<{this,view(arg0)na}> Name {this,view(arg0)na} NumArgs (ParsedTemplateArgument *)(this+1) Operator {{annot_template_id ({(clang::TemplateIdAnnotation *)(PtrData),na})}} {{Identifier ({(clang::IdentifierInfo *)(PtrData),na})}} {(clang::tok::TokenKind)Kind,en} {BufferPtr,nasb} {TheLexer._Mypair._Myval2,na} Expanding Macro: {TheTokenLexer._Mypair._Myval2,na} [{(Token *)(CachedTokens.BeginX) + CachedLexPos,na}] {IncludeMacroStack._Mypair._Myval2._Mylast - 1,na} {IncludeMacroStack._Mypair._Myval2._Mylast - 1,na} {CurLexer._Mypair._Myval2,na} Expanding Macro: {CurTokenLexer._Mypair._Myval2,na} {this,view(cached)} CLK_LexAfterModuleImport [{Tok}] {PP,na} this *this {Id} &{Id} No visualizer for {Kind} =, &, {(LambdaCapture *)(Captures.BeginX),na}{this,view(capture1)na} ,{(LambdaCapture *)(Captures.BeginX)+1,na}{this,view(capture2)na} ,{(LambdaCapture *)(Captures.BeginX)+2,na}{this,view(capture3)na} ,... [{this,view(default)na}{this,view(capture0)na}] , [{TypeRep}] , [{ExprRep}] , [{DeclRep}] [{(clang::DeclSpec::SCS)StorageClassSpec,en}], [{(clang::TypeSpecifierType)TypeSpecType,en}]{this,view(extra)na} (clang::DeclSpec::SCS)StorageClassSpec (clang::TypeSpecifierType)TypeSpecType TypeRep ExprRep DeclRep {Name,s} {Name,s} {Name,s} (clang::StorageClass)SClass (clang::ThreadStorageClassSpecifier)TSCSpec (clang::VarDecl::InitializationStyle)InitStyle {DeclType,view(left)} {Name,view(cpp)}{DeclType,view(right)} Name DeclType {(DeclaratorDecl*)this,nand} (DeclaratorDecl*)this,nd Init VarDeclBits {*(VarDecl*)this,nd} ParmVarDeclBits *(VarDecl*)this,nd {"explicit ",sb} explicit({ExplicitSpec,view(ptr)na}) {ExplicitSpec,view(int)en} {ExplicitSpec,view(int)en} : {ExplicitSpec,view(ptr)na} {ExplicitSpec,view(cpp)}{Name,view(cpp)nd}({(FunctionDecl*)this,view(parm0)nand}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)} ExplicitSpec (bool)FunctionDeclBits.IsCopyDeductionCandidate (FunctionDecl*)this,nd {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)} {ParamInfo[0],na}{*this,view(parm1)nd} , {ParamInfo[1],na}{*this,view(parm2)nd} , {ParamInfo[2],na}{*this,view(parm3)nd} , {ParamInfo[3],na}{*this,view(parm4)nd} , {ParamInfo[4],na}{*this,view(parm5)nd} , /* expand for more params */ auto {Name,view(cpp)nd}({*this,view(parm0)nd}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)} {this,view(retType)nand} {Name,view(cpp)nd}({*this,view(parm0)nd}) (clang::DeclaratorDecl *)this,nd ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType {*this,view(parm0)nd} ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams ParamInfo TemplateOrSpecialization {*($T1*)&Ptr} ($T1*)&Ptr {($T1 *)Ptr} ($T1 *)Ptr {*((NamedDecl **)(this+1))[0],view(cpp)}{*this,view(parm1)} , {*((NamedDecl **)(this+1))[1],view(cpp)}{*this,view(parm2)} , {*((NamedDecl **)(this+1))[2],view(cpp)}{*this,view(parm3)} , {*((NamedDecl **)(this+1))[3],view(cpp)}{*this,view(parm4)} , {*((NamedDecl **)(this+1))[4],view(cpp)}{*this,view(parm5)} , /* Expand for more params */ <{*this,view(parm0)}> NumParams (NamedDecl **)(this+1) {(clang::Stmt::StmtClass)StmtBits.sClass,en} (clang::Stmt::StmtClass)StmtBits.sClass,en Expression of class {(clang::Stmt::StmtClass)StmtBits.sClass,en} and type {TR,view(cpp)} public protected private {*(clang::NamedDecl *)(Ptr&~Mask)} {*this,view(access)} {*this,view(decl)} (clang::AccessSpecifier)(Ptr&Mask),en *(clang::NamedDecl *)(Ptr&~Mask) [IK_Identifier] {*Identifier} [IK_OperatorFunctionId] {OperatorFunctionId} [IK_ConversionFunctionId] {ConversionFunctionId} [IK_ConstructorName] {ConstructorName} [IK_DestructorName] {DestructorName} [IK_DeductionGuideName] {TemplateName} [IK_TemplateId] {TemplateId} [IK_ConstructorTemplateId] {TemplateId} Kind Identifier OperatorFunctionId ConversionFunctionId ConstructorName DestructorName TemplateName TemplateId TemplateId NumDecls={NumDecls} NumDecls (Decl **)(this+1) {*D} {*(DeclGroup *)((uintptr_t)D&~1)} D (DeclGroup *)((uintptr_t)D&~1) {DS} {Name} {Decls} Decls {Ambiguity,en}: {Decls} {ResultKind,en}: {Decls} Invalid Unset {Val} Invalid Unset {($T1)(PtrWithInvalid&~1)} (bool)(PtrWithInvalid&1) ($T1)(PtrWithInvalid&~1)