c++/8567: std::endl is of unknown type when overloading operator<< (repeat in case attachment didnt work)
Jason Stanek
jstanek@iastate.edu
Thu Nov 21 06:26:00 GMT 2002
The following reply was made to PR c++/8567; it has been noted by GNATS.
From: Jason Stanek <jstanek@iastate.edu>
To: bangerth@dealii.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org,
jstanek@iastate.edu, jstanek@vrac.iastate.edu, nobody@gcc.gnu.org,
gcc-gnats@gcc.gnu.org
Cc:
Subject: Re: c++/8567: std::endl is of unknown type when overloading
operator<< (repeat in case attachment didnt work)
Date: Thu, 14 Nov 2002 21:13:20 -0600
Isnt there a way to specify a default template type?
So instead of declaring endl as a pure template, it has a default type in
the case that you dont specify one.
Something like this:
namespace std {
template <typename T=int> T& endl (T&);
};
-Jason
At 11:37 PM 11/14/2002 +0000, you wrote:
>Synopsis: std::endl is of unknown type when overloading operator<< (repeat
>in case attachment didnt work)
>
>State-Changed-From-To: open->closed
>State-Changed-By: bangerth
>State-Changed-When: Thu Nov 14 15:37:17 2002
>State-Changed-Why:
> Not a bug. Basically, it is this:
> ---------------------------------
> namespace std {
> template <typename T> T& endl (T&);
> };
>
> class BlackHole{};
>
> template <typename T> BlackHole& operator<<(BlackHole& bh, const T&
> dummy);
> template <typename T> BlackHole& operator<<(BlackHole& bh, T&
> (*dummy)(T&));
>
> int main() {
> BlackHole bh;
> bh << std::endl;
> }
> -------------------------------
> Since there is no unambiguous function std::endl, the
> compiler cannot know which one to take as argument, so
> you have to disambiguate the situation by passing it the
> exact template argument list. Alternatively, you can give
> an overloaded non-template op<<; in this example, this
> would do:
> BlackHole& operator<<(BlackHole& bh, int& (*dummy)(int&));
> Then std::endl<int> would be taken.
>
> W.
>
>http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8567
More information about the Gcc-prs
mailing list