@@ -3501,37 +3501,37 @@ class Sema final {
3501
3501
3502
3502
/// For a defaulted function, the kind of defaulted function that it is.
3503
3503
class DefaultedFunctionKind {
3504
- CXXSpecialMember SpecialMember : 8;
3505
- DefaultedComparisonKind Comparison : 8;
3504
+ unsigned SpecialMember : 8;
3505
+ unsigned Comparison : 8;
3506
3506
3507
3507
public:
3508
3508
DefaultedFunctionKind()
3509
- : SpecialMember(CXXInvalid), Comparison(DefaultedComparisonKind::None) {
3509
+ : SpecialMember(CXXInvalid), Comparison(llvm::to_underlying( DefaultedComparisonKind::None) ) {
3510
3510
}
3511
3511
DefaultedFunctionKind(CXXSpecialMember CSM)
3512
- : SpecialMember(CSM), Comparison(DefaultedComparisonKind::None) {}
3512
+ : SpecialMember(CSM), Comparison(llvm::to_underlying( DefaultedComparisonKind::None) ) {}
3513
3513
DefaultedFunctionKind(DefaultedComparisonKind Comp)
3514
- : SpecialMember(CXXInvalid), Comparison(Comp) {}
3514
+ : SpecialMember(CXXInvalid), Comparison(llvm::to_underlying( Comp) ) {}
3515
3515
3516
3516
bool isSpecialMember() const { return SpecialMember != CXXInvalid; }
3517
3517
bool isComparison() const {
3518
- return Comparison != DefaultedComparisonKind::None;
3518
+ return static_cast<DefaultedComparisonKind>( Comparison) != DefaultedComparisonKind::None;
3519
3519
}
3520
3520
3521
3521
explicit operator bool() const {
3522
3522
return isSpecialMember() || isComparison();
3523
3523
}
3524
3524
3525
- CXXSpecialMember asSpecialMember() const { return SpecialMember; }
3526
- DefaultedComparisonKind asComparison() const { return Comparison; }
3525
+ CXXSpecialMember asSpecialMember() const { return static_cast<CXXSpecialMember>( SpecialMember) ; }
3526
+ DefaultedComparisonKind asComparison() const { return static_cast<DefaultedComparisonKind>( Comparison) ; }
3527
3527
3528
3528
/// Get the index of this function kind for use in diagnostics.
3529
3529
unsigned getDiagnosticIndex() const {
3530
3530
static_assert(CXXInvalid > CXXDestructor,
3531
3531
"invalid should have highest index");
3532
3532
static_assert((unsigned)DefaultedComparisonKind::None == 0,
3533
3533
"none should be equal to zero");
3534
- return SpecialMember + (unsigned) Comparison;
3534
+ return SpecialMember + Comparison;
3535
3535
}
3536
3536
};
3537
3537
0 commit comments