From: Daniel Berlin <dberlin@dberlin.org>
To: Daniel Jacobowitz <drow@mvista.com>
Cc: David Carlton <carlton@bactrian.org>, gdb-patches@sources.redhat.com
Subject: Re: [RFA] handling of 'operator' in cp_find_first_component
Date: Tue, 22 Apr 2003 15:09:00 -0000 [thread overview]
Message-ID: <5431A3D8-74CF-11D7-A78B-000A95A34564@dberlin.org> (raw)
In-Reply-To: <20030422032152.GA5033@nevyn.them.org>
On Monday, April 21, 2003, at 11:21 PM, Daniel Jacobowitz wrote:
>
> i.e. you can't have a program with
> int foo<int> (int)
> and
> long foo<int> (int)
> in it!
Stop right here.
This is not quite right, since the second example is invalid.
You can, however, have (geez i haven't written C++ templates in a
while. it took me a few compiles to get this right):
template <class blah> blah foo (int a)
{
return a;
}
int main(void)
{
int q = foo<int>(5);
long r = foo<long>(5);
}
Note the only real difference here is in return type.
It also definitely generates two functions:
root@dberlin root]# nm -C a.o
U __gxx_personality_v0
00000000 T main
00000000 W int foo<int>(int)
00000000 W long foo<long>(int)
[root@dberlin root]#
There is no way to write exactly what you want in valid C++ (IIRC), so
i'm not sure if this program demonstrates what you think can't be done
or not.
To answer whether you need the return type, let's add two
specializations here and make it worse:
template <> long foo (int a)
{
return 9;
}
template <> int foo (int a)
{
return 10;
}
Now, without the return type in the template, you would *never* know
which function to call from a debugger if someone does p foo(5)
(However, i'll note the only case you will know is when someone does
something like p a=foo(5), where "a" is a program variable of type int
or long).
With the return type, you could at least present a useful list to the
user and ask.
Unless you want the list to have to re-demangle names so it can get the
return type out again, or something ugly like that.
--Dan
next prev parent reply other threads:[~2003-04-22 15:09 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-18 19:17 David Carlton
2003-04-18 19:47 ` Daniel Berlin
2003-04-22 3:21 ` Daniel Jacobowitz
2003-04-22 15:09 ` Daniel Berlin [this message]
2003-04-22 15:23 ` Daniel Jacobowitz
2003-04-23 23:46 ` David Carlton
2003-04-23 23:49 ` David Carlton
2003-04-24 1:13 ` Daniel Berlin
2003-04-23 23:45 ` David Carlton
2003-04-24 1:25 ` David Carlton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5431A3D8-74CF-11D7-A78B-000A95A34564@dberlin.org \
--to=dberlin@dberlin.org \
--cc=carlton@bactrian.org \
--cc=drow@mvista.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox