On Thu, Jan 7, 2010 at 3:45 PM, Aaron Boodman <a...@google.com> wrote:

> On Thu, Jan 7, 2010 at 1:28 PM, Peter Kasting <pkast...@google.com> wrote:
> > If you have ever used any of the EmptyXXX() functions, or ever will,
> please
> > read on.
> > These functions (in string_util.h and gurl.h) are meant for a single,
> > specific use case:
> > const std::string& MyClass::foo() const {
> >   return (everything == OK) ? member_string : EmptyString();
> > }
> > Here you cannot return "string()", because it's destroyed before the
> > function returns, and the caller receives garbage; and you don't want to
> > have the function return by value, because you can access the member
> > variable directly and save a copy.  The utility functions give you a
> global
> > empty string that you can safely return a const reference to.
> > DON'T USE THESE OUTSIDE THIS CASE.  You should never use these as
> > initializers, arguments to functions, or return values in functions that
> > return by value.  Just use the default constructor; that's what it's
> there
> > for.
>
> Out of curiosity, what is wrong with using EmptyString() in those
> cases? Is there a correctness problem? Unnecessary inclusion of
> string_util.h?
>
>
probably just a tad more costly since it involves Singleton<T>.  but, i
think peter's main reason was simply to stick to the simpler and more
familiar std::string.

-darin




> - a
>
> --
> Chromium Developers mailing list: chromium-dev@googlegroups.com
> View archives, change email options, or unsubscribe:
>    http://groups.google.com/group/chromium-dev
>
-- 
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev

Reply via email to