Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #3449

Re: templated operator()<<

From Kai-Uwe Bux <jkherciueh@gmx.net>
Newsgroups comp.lang.c++
Subject Re: templated operator()<<
Followup-To comp.lang.c++
Date 2011-04-12 08:23 +0200
Organization University of Bielefeld
Message-ID <io0r4d$6c2$1@hoshi.visyn.net> (permalink)
References <io03f9$qsv$1@reader1.panix.com> <io06co$fgm$1@dont-email.me> <io0bl5$9hr$1@reader1.panix.com>

Followups directed to: comp.lang.c++

Show all headers | View raw


Ruben Safir wrote:

> On Tue, 12 Apr 2011 02:29:10 +0200, Alf P. Steinbach /Usenet wrote:
> 
>> * Ruben Safir, on 12.04.2011 01:39:
>>> as I understand things, the operator<<() needs to be external as to the
>>> class and then declared as a friend of the class.  I'm not sure if I
>>> understand why that is the case.
>> 
> 
> 
> what??  operator<<() can be a normal class member?

Yes, operator<< can be a normal class member. That says that the expression

  a << b           (*)

where a is of type A and b is of type B can be interpreted in two ways:

1) operator<<( a, b )
2) a.operator<<(b)

That is, in (*) the operator<< could be a member function of A. Even if B 
has a member function operator<<(), it is not be used to interpret (*).

Hence, when declaring output operators for the use with ostreams, it does 
not help to make them member functions of the class you want to set up for 
output. However, when deriving from streams, you can make them member 
functions.


Best,

Kai-Uwe Bux

Back to comp.lang.c++ | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

templated operator()<< Ruben Safir <ruben@mrbrklyn.com> - 2011-04-11 23:39 +0000
  Re: templated operator()<< LR <lruss@superlink.net> - 2011-04-11 20:07 -0400
  Re: templated operator()<< "Alf P. Steinbach /Usenet" <alf.p.steinbach+usenet@gmail.com> - 2011-04-12 02:29 +0200
    Re: templated operator()<< Ruben Safir <ruben@mrbrklyn.com> - 2011-04-12 01:59 +0000
      Re: templated operator()<< "Alf P. Steinbach /Usenet" <alf.p.steinbach+usenet@gmail.com> - 2011-04-12 04:01 +0200
        Re: templated operator()<< Ruben Safir <ruben@mrbrklyn.com> - 2011-04-12 02:37 +0000
        Re: templated operator()<< Ruben Safir <ruben@mrbrklyn.com> - 2011-04-12 02:43 +0000
          Re: templated operator()<< "Alf P. Steinbach /Usenet" <alf.p.steinbach+usenet@gmail.com> - 2011-04-12 05:25 +0200
            Re: templated operator()<< Michael Doubez <michael.doubez@free.fr> - 2011-04-12 00:17 -0700
      Re: templated operator()<< Kai-Uwe Bux <jkherciueh@gmx.net> - 2011-04-12 08:23 +0200

csiph-web