Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ Moderated > Re: How to buil...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 15 of 30 Topic 9533 of 9831
Post > Topic >>

Re: How to build a string on the fly, using std::ostringstream? [Reposting]

by "Niels Dekker - no return address" <noreply@[EMAIL PROTECTED] > Apr 28, 2008 at 04:01 PM

Brendan Miller wrote:
> People do a using std::swap before calling swap, because if there
> is no swap provided by ADL, then we want the default swap to be
> available.

There's an extra reason for "using std::swap" within the body of a swap
function. Suppose we'd add a swap member function to the latest version of
Vidar's StringBuilder, having an std::auto_ptr member (StringBuilder::s).
Suppose we would write (inline, within the struct definition):

   void swap(StringBuilder& arg)
   {
     swap(this->s, arg.s);  // compile error!!!
   }

You might expect ADL to find std::swap, because auto_ptr is inside the std
namespace. But instead, it wouldn't compile, because name lookup would
find
the member function itself and stop there. When adding "using std::swap",
the
member swap would be hidded, and std::swap would be found!

   void swap(StringBuilder& arg)
   {
     using std::swap;
     swap(this->s, arg.s);  // Okay!
   }

So now I don't understand why Vidar's StringBuilder::operator<< compiles
without the using declaration!!!

Vidar Hasfjord wrote:
....
>     struct StringBuilder
>     {
>       std::auto_ptr <std::ostringstream> s;
>
....
>       template <typename T>
>       inline StringBuilder& operator << (const T& v)
>       {
>         *s << v;
>         return *this;
>       }

Why doesn't StringBuilder::operator<< hide other operator<< functions,
called
within its own body???  I would expect to get a compile error from doing
"*s
<< v"!!!


Thanks again,

   Niels



-- 
      [ See http://www.gotw.ca/resources/clcm.htm
for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]
 




 30 Posts in Topic:
How to build a string on the fly, using std::ostringstream?
"Niels Dekker - no r  2008-04-23 13:14:37 
Re: How to build a string on the fly, using std::ostringstream?
Martin York <Martin.Yo  2008-04-24 01:05:54 
Re: How to build a string on the fly, using std::ostringstream?
Peter Jones <dev-null@  2008-04-24 01:10:33 
Re: How to build a string on the fly, using std::ostringstream?
Carl Barron <cbarron41  2008-04-24 01:43:21 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-24 15:12:53 
Re: How to build a string on the fly, using std::ostringstream?
Brendan <catphive@[EMA  2008-04-24 15:43:20 
Re: How to build a string on the fly, using std::ostringstream?
Brendan <catphive@[EMA  2008-04-25 10:22:59 
Re: How to build a string on the fly, using std::ostringstream?
Niels Dekker - no return   2008-04-26 08:46:24 
Re: How to build a string on the fly, using std::ostringstream?
Carl Barron <cbarron41  2008-04-27 07:13:20 
Re: How to build a string on the fly, using std::ostringstream?
Brendan Miller <catphi  2008-04-27 07:29:25 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-27 07:29:42 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-28 01:56:19 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-28 02:13:22 
Re: How to build a string on the fly, using std::ostringstream?
vova777@[EMAIL PROTECTED]  2008-04-28 16:06:27 
Re: How to build a string on the fly, using std::ostringstream?
"Niels Dekker - no r  2008-04-28 16:01:35 
Re: How to build a string on the fly, using std::ostringstream?
guinness.tony@[EMAIL PROT  2008-04-28 16:01:50 
Re: How to build a string on the fly, using std::ostringstream?
"Hendrik Schober&quo  2008-04-28 20:35:47 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-29 10:38:48 
Re: How to build a string on the fly, using std::ostringstream?
Brendan Miller <catphi  2008-04-29 10:43:23 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-29 10:43:23 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-29 10:43:22 
Re: How to build a string on the fly, using std::ostringstream?
vova777@[EMAIL PROTECTED]  2008-04-29 12:13:56 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-29 17:41:45 
Re: How to build a string on the fly, using std::ostringstream?
Niels Dekker - no return   2008-04-30 10:26:51 
Re: How to build a string on the fly, using std::ostringstream?
vova777@[EMAIL PROTECTED]  2008-04-30 10:39:18 
Re: How to build a string on the fly, using std::ostringstream?
Vidar Hasfjord <vattil  2008-04-30 17:04:43 
Re: How to build a string on the fly, using std::ostringstream?
guinness.tony@[EMAIL PROT  2008-05-01 13:12:58 
Re: How to build a string on the fly, using std::ostringstream?
"Niels Dekker - no r  2008-05-02 12:45:30 
Re: How to build a string on the fly, using std::ostringstream?
guinness.tony@[EMAIL PROT  2008-05-07 11:43:29 
Re: How to build a string on the fly, using std::ostringstream?
"Niels Dekker - no r  2008-05-08 21:29:05 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Jul 26 2:48:35 CDT 2008.