$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Noel Yap (Noel.Yap_at_[hidden])
Date: 2003-05-03 23:12:21
"Justin M. Lewis" wrote:
> A little bit of an overly simple example.  How about something more like
> 
> void MyGetCWD(c_out<std::string> cwd)
> {
>     char *buf = new char[FIRSTSIZE];
>     unsigned int size = FIRSTSIZE;
>     while(getcwd(buf, sizeof(buf)) == NULL)
>     {
>         delete [] buf;
>         size += step;
>         buf = new char[size];
>     }
> 
>     cwd = buf;
>     delete[] buf;
> }
Why not:
std::string MyGetCWD()
{
  .
  .
  .
  return std::string( buf );
}
> Or, how about,
> void GetFileName(c_in_out<std::string> path, const std::string &filter)
> {
>     std::string fname;
>     FindFirstFileWithFilter(out(fname), path, filter);
>     path += "/";
>     path += fname;
> }
void GetFileName( ref< std::string > path, std::string const& filter )
{
  .
  .
  .
}
> I could probably make up much better examples, but I was doing something
> with getcwd on friday, so it's on my mind still.
I believe returning a string may be more optimal than passing in an out
parameter since:
- the compiler can optimize away constructor/destructor calls with RVO. 
For example:
  std::string cwd( MyGetCWD() );
or what about usage like:
  std::cout << MyGetCWD() << std::endl; // only one std::string is
created
Noel