]> granicus.if.org Git - clang/commitdiff
Doxygen-ify a comment and add an example of when this AST node is required.
authorChandler Carruth <chandlerc@gmail.com>
Mon, 10 May 2010 00:56:18 +0000 (00:56 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 10 May 2010 00:56:18 +0000 (00:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103389 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ExprCXX.h

index 58603ebbfbdda13b05302eb055bf145f5f64fc8e..42f218e45efae88872960c4f7d17130aedfa6155 100644 (file)
@@ -564,8 +564,20 @@ public:
   const CXXDestructorDecl *getDestructor() const { return Destructor; }
 };
 
-/// CXXBindTemporaryExpr - Represents binding an expression to a temporary,
-/// so its destructor can be called later.
+/// \brief Represents binding an expression to a temporary.
+///
+/// This ensures the destructor is called for the temporary. It should only be
+/// needed for non-POD, non-trivially destructable class types. For example:
+///
+/// \code
+///   struct S {
+///     S() { }  // User defined constructor makes S non-POD.
+///     ~S() { } // User defined destructor makes it non-trivial.
+///   };
+///   void test() {
+///     const S &s_ref = S(); // Requires a CXXBindTemporaryExpr.
+///   }
+/// \endcode
 class CXXBindTemporaryExpr : public Expr {
   CXXTemporary *Temp;