<div dir="ltr">Thanks for committing the last patch however there's another edge case not covered by the previous patch:<div><br></div><div><div> struct VirualDestrClass</div><div> {</div><div> VirualDestrClass(int arg);</div>
<div> virtual ~VirualDestrClass();</div><div> };</div><div><br></div><div> struct ConstrWithCleanupsClass</div><div> {</div><div> ConstrWithCleanupsClass(const VirualDestrClass& cplx = VirualDestrClass(42));</div>
<div> };</div></div><div><br></div><div> ConstrWithCleanupsClass cwcNoArg;<br></div><div><br></div><div style>Here cwcNoArg has it's CXXConstructExpr wrapped in a ExprWithCleanups (to handle the cleanup of the temporary). As the old code didn't look through the implicit expressions the printed result was this:</div>
<div style><br></div><div style> ConstrWithCleanupsClass cwcNoArg();</div>
<div><br></div><div style>Patch attached with fix and new test-cases for review and commit if it LGTY. All tests passed locally.</div><div style><br></div><div style>- Will.</div></div>