]> granicus.if.org Git - clang/commitdiff
Add RemoveOutermostTemporaryBinding. Not used yet.
authorAnders Carlsson <andersca@mac.com>
Sat, 30 May 2009 22:47:03 +0000 (22:47 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 30 May 2009 22:47:03 +0000 (22:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72644 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/Sema.h

index b2540ba2e05fb648962b9c813ead07bc9f64644a..d926fa9c4bd792f472545c6c0dab1fa5ae177d09 100644 (file)
@@ -1501,6 +1501,17 @@ public:
   /// it simply returns the passed in expression.
   OwningExprResult MaybeBindToTemporary(Expr *E);
 
+  /// RemoveOutermostTemporaryBinding - Remove and destroy the outermost
+  /// CXXBindToTemporaryExpr if necessary. This is used when we want to not
+  /// destroy a temporary when a full expression has been evaluated. 
+  /// For example:
+  ///
+  /// const T& t = T(10, T());
+  ///
+  /// Here the outermost T needs to be destroyed when t goes out of scope, but
+  /// the innermost T needs to be destroyed when the expr has been evaluated.  
+  Expr *RemoveOutermostTemporaryBinding(Expr *E);
+  
   /// InitializationKind - Represents which kind of C++ initialization
   /// [dcl.init] a routine is to perform.
   enum InitializationKind {