]> granicus.if.org Git - clang/commitdiff
Give CanQual<T> an implicit conversion to bool, so that it can be used
authorDouglas Gregor <dgregor@apple.com>
Thu, 12 Nov 2009 16:49:45 +0000 (16:49 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 12 Nov 2009 16:49:45 +0000 (16:49 +0000)
in "if" statements like:

  if (CanQual<ReferenceType> RefType = T.getAs<ReferenceType>())

Thanks to Clang for pointing out this mistake :)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86995 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/CanonicalType.h
lib/Sema/SemaDeclCXX.cpp

index a7750517090e6c70ed3a050d3dd042e391836c1b..a53f2f48fd21bd1b731f4decc72a3ebf533fe835 100644 (file)
@@ -71,6 +71,9 @@ public:
   /// \brief Implicit conversion to a qualified type.
   operator QualType() const { return Stored; }
 
+  /// \brief Implicit conversion to bool.
+  operator bool() const { return !isNull(); }
+  
   bool isNull() const {
     return Stored.isNull();
   }
index d094ea4b0fad3d67e9af212a9bd2dbed1e61a3f9..84934f5baf885f71abf46944ef7c591b45aabc53 100644 (file)
@@ -4014,7 +4014,7 @@ bool Sema::CheckOverloadedOperatorDeclaration(FunctionDecl *FnDecl) {
     if (!ResultTy->isDependentType() && ResultTy != Context.VoidPtrTy)
       return Diag(FnDecl->getLocation(),
                   diag::err_operator_new_result_type) << FnDecl->getDeclName()
-                  << Context.VoidPtrTy;
+                  << static_cast<QualType>(Context.VoidPtrTy);
     return ret;
   }