clang API Documentation
The injected class name of a C++ class template or class template partial specialization. Used to record that a type was spelled with a bare identifier rather than as a template-id; the equivalent for non-templated classes is just RecordType. More...
#include <Type.h>
Public Member Functions | |
QualType | getInjectedSpecializationType () const |
const TemplateSpecializationType * | getInjectedTST () const |
CXXRecordDecl * | getDecl () const |
bool | isSugared () const |
QualType | desugar () const |
Static Public Member Functions | |
static bool | classof (const Type *T) |
Friends | |
class | ASTContext |
class | ASTReader |
The injected class name of a C++ class template or class template partial specialization. Used to record that a type was spelled with a bare identifier rather than as a template-id; the equivalent for non-templated classes is just RecordType.
Injected class name types are always dependent. Template instantiation turns these into RecordTypes.
Injected class name types are always canonical. This works because it is impossible to compare an injected class name type with the corresponding non-injected template type, for the same reason that it is impossible to directly compare template parameters from different dependent contexts: injected class name types can only occur within the scope of a particular templated declaration, and within that scope every template specialization will canonicalize to the injected class name (when appropriate according to the rules of the language).
static bool clang::InjectedClassNameType::classof | ( | const Type * | T | ) | [inline, static] |
Definition at line 3924 of file Type.h.
References clang::Type::getTypeClass().
QualType clang::InjectedClassNameType::desugar | ( | ) | const [inline] |
CXXRecordDecl * InjectedClassNameType::getDecl | ( | ) | const |
Definition at line 1943 of file Type.cpp.
References getInterestingTagDecl().
QualType clang::InjectedClassNameType::getInjectedSpecializationType | ( | ) | const [inline] |
Definition at line 3914 of file Type.h.
Referenced by IsStructurallyEquivalent().
const TemplateSpecializationType* clang::InjectedClassNameType::getInjectedTST | ( | ) | const [inline] |
bool clang::InjectedClassNameType::isSugared | ( | ) | const [inline] |
friend class ASTContext [friend] |
Reimplemented from clang::Type.
friend class ASTReader [friend] |
Reimplemented from clang::Type.