35 enum class DefaultableMemberKind {
51 State analyzeImpl(
const FunctionDecl *
FuncDecl);
53 State analyzeUnresolvedOrDefaulted(
const CXXMethodDecl *MethodDecl,
54 const FunctionProtoType *FuncProto);
56 State analyzeFieldDecl(
const FieldDecl *FDecl, DefaultableMemberKind Kind);
58 State analyzeBase(
const CXXBaseSpecifier &Base, DefaultableMemberKind Kind);
60 enum class SkipMethods :
bool {
65 State analyzeRecord(
const CXXRecordDecl *RecordDecl,
66 DefaultableMemberKind Kind,
67 SkipMethods SkipMethods = SkipMethods::No);
69 static State analyzeFunctionEST(
const FunctionDecl *
FuncDecl,
70 const FunctionProtoType *FuncProto);
72 static bool hasTrivialMemberKind(
const CXXRecordDecl *RecDecl,
73 DefaultableMemberKind Kind);
75 static bool isConstructor(DefaultableMemberKind Kind);
77 static bool isSpecialMember(DefaultableMemberKind Kind);
79 static bool isComparison(DefaultableMemberKind Kind);
81 static DefaultableMemberKind
82 getDefaultableMemberKind(
const FunctionDecl *
FuncDecl);
84 llvm::DenseMap<const FunctionDecl *, State> FunctionCache{32U};