------- Comment #25 from kspiteri at ieee dot org  2006-06-15 06:25 -------
In reply to comment #24:

> No it should not be. a() is a temporary so it cannot be bound to "a&".  At
> least it should not be.

Then this is not a bug. The C++ standard in 27.6.2.1 defines
* basic_ostream<charT,traits>& operator<<(const void* p);
as a member of class basic_ostream<charT, traits> and
* template<class traits>
*   basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,
*                                          const char*);
as a helper function.

If the output for attachment 11669 should be
char
void
then ostreams are behaving correctly.


Also, in the attachment, if the line
    a() << "";
is changed to
    a() << "" << "";
then the output corresponding to that line is changed from
    void
to
    void
    char
Does this mean that a() << "" is returning the temporary variable bound to "a&"
while a() itself cannot be bound to "a&"?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9925

Reply via email to