Boost logo

Boost-Build :

From: Caleb Epstein (caleb.epstein_at_[hidden])
Date: 2006-12-02 20:32:25


On 12/2/06, K. Noel Belcourt <kbelco_at_[hidden]> wrote:
> From Sun's CC manpage,
>
> [no%]tmplife (Standard mode only) [Do not] Clean
> up the temporary objects that are
> created by an expression at the end
> of the full expression, as defined
> in the ANSI/ISO C++ Standard.
> (When -features=no%tmplife is in
> effect, most temporary objects are
> cleaned up at the end of their
> block.) The default is no%tmplife.
>
> Which I read to mean that -features=tmplife leaves temporary files
> scattered around.

Nothing of the sort. It has to do with the lifetime of temporaries
created in expressions like:

   void foo (const std::string& arg) { ... }

   void func () {
      foo ("bar"); // [1]
      // more stuff...
  } // [2]

With Sun CC's default (-no%tmplife), the unnamed temporary std::string
created for the call to foo would not be destroyed until the enclosing
scope exits ([2] above). A conforming compiler (and Sun CC with
-tmplife) will destroy the temporary at [1]. In the case of
std::string this side-effect is harmless, but for more "interesting"
types the default behavior could be disastrous.

-- 
Caleb Epstein

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk