зеркало из https://github.com/microsoft/clang-1.git
Add missing lvalue-to-rvalue conversion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143364 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
6a7c94af98
Коммит
7a420df78d
|
@ -529,6 +529,12 @@ CastsAwayConstness(Sema &Self, QualType SrcType, QualType DestType,
|
|||
/// Refer to C++ 5.2.7 for details. Dynamic casts are used mostly for runtime-
|
||||
/// checked downcasts in class hierarchies.
|
||||
void CastOperation::CheckDynamicCast() {
|
||||
if (ValueKind == VK_RValue && !isPlaceholder(BuiltinType::Overload)) {
|
||||
SrcExpr = Self.DefaultFunctionArrayLvalueConversion(SrcExpr.take());
|
||||
if (SrcExpr.isInvalid()) // if conversion failed, don't report another error
|
||||
return;
|
||||
}
|
||||
|
||||
QualType OrigSrcType = SrcExpr.get()->getType();
|
||||
QualType DestType = Self.Context.getCanonicalType(this->DestType);
|
||||
|
||||
|
|
|
@ -197,6 +197,9 @@ constexpr bool s4 = &x >= &x;
|
|||
constexpr bool s5 = &x < &x;
|
||||
constexpr bool s6 = &x > &x;
|
||||
|
||||
constexpr S* sptr = &s;
|
||||
constexpr bool dyncast = sptr == dynamic_cast<S*>(sptr);
|
||||
|
||||
using check = int[m1 + (m2<<1) + (m3<<2) + (m4<<3) + (m5<<4) + (m6<<5) +
|
||||
(n1<<6) + (n2<<7) + (n7<<8) + (n8<<9) + (g1<<10) + (g2<<11) +
|
||||
(s1<<12) + (s2<<13) + (s3<<14) + (s4<<15) + (s5<<16) + (s6<<17)];
|
||||
|
|
Загрузка…
Ссылка в новой задаче