$include_dir="/home/hyper-archives/boost-build/include"; include("$include_dir/msg-header.inc") ?>
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