Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #15117
| From | Qi <no@no.no> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Any way to defer template function overloading? |
| Date | 2012-04-01 10:05 +0800 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <jl8d4h$hbf$1@speranza.aioe.org> (permalink) |
Let me show some test code.
=====code start
template <typename T>
void abc(const T &)
{
cout << "1" << endl;
}
template <typename T>
void test(const T & a)
{
abc(a);
}
void abc(const string &)
{
cout << "2" << endl;
}
int main(int argc, char * argv[])
{
(void)argc;
(void)argv;
string s;
test(s);
return 0;
}
=====code end
"abc" is a template function that I use as some kind of traits.
(similar as get_pointer in Boost).
The "string" overloading is after the "test" function.
"test" is the function where using "abc". "test" is a template
function too.
"main" is the function that using "test". It's guaranteed that
all overloading will be declared before main (but may after "test").
In standard way, above code will print "1" on GCC (VC will print "2"
because of its less standard template parsing).
My question is, is there any way to make "test" chooses
the "string" overloading and print 2, no matter the overloading
is before or after "test"?
The reason I want that is, the overloading functions may spread
in multiple headers, if "test" can only choose the overloading
that declared before it, that will enforce the including order of
the headers.
Thanks
--
WQ
Back to comp.lang.c++ | Previous | Next — Next in thread | Find similar | Unroll thread
Any way to defer template function overloading? Qi <no@no.no> - 2012-04-01 10:05 +0800
Re: Any way to defer template function overloading? Ian Collins <ian-news@hotmail.com> - 2012-04-01 16:06 +1200
Re: Any way to defer template function overloading? Qi <no@no.no> - 2012-04-01 13:53 +0800
Re: Any way to defer template function overloading? Juha Nieminen <nospam@thanks.invalid> - 2012-04-01 17:24 +0000
Re: Any way to defer template function overloading? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-04-02 00:40 +0200
Re: Any way to defer template function overloading? Ian Collins <ian-news@hotmail.com> - 2012-04-02 11:02 +1200
Re: Any way to defer template function overloading? Juha Nieminen <nospam@thanks.invalid> - 2012-04-02 05:29 +0000
Re: Any way to defer template function overloading? Qi <no@no.com> - 2012-04-02 13:48 +0800
Re: Any way to defer template function overloading? Ian Collins <ian-news@hotmail.com> - 2012-04-02 17:53 +1200
Re: Any way to defer template function overloading? Qi <no@no.com> - 2012-04-02 13:57 +0800
Re: Any way to defer template function overloading? Ian Collins <ian-news@hotmail.com> - 2012-04-02 18:12 +1200
Re: Any way to defer template function overloading? Miles Bader <miles@gnu.org> - 2012-04-02 15:32 +0900
Re: Any way to defer template function overloading? Miles Bader <miles@gnu.org> - 2012-04-02 14:58 +0900
Re: Any way to defer template function overloading? Juha Nieminen <nospam@thanks.invalid> - 2012-04-02 10:11 +0000
Re: Any way to defer template function overloading? Qi <no@no.com> - 2012-04-02 19:04 +0800
Re: Any way to defer template function overloading? Qi <no@no.com> - 2012-04-02 19:17 +0800
Re: Any way to defer template function overloading? jgk@panix.com (Joe keane) - 2012-04-02 14:41 +0000
csiph-web