Overload tipo di ritorno
Von: GM (gm@no.spam) [Profil]
Datum: 15.04.2008 13:09
Message-ID: <48048cb8$0$41665$4fafbaef@reader4.news.tin.it>
Newsgroup: it.comp.lang.c++
Datum: 15.04.2008 13:09
Message-ID: <48048cb8$0$41665$4fafbaef@reader4.news.tin.it>
Newsgroup: it.comp.lang.c++
E' vietato fare due funzioni con stesso nome e stessi argomenti che
differiscono solo per valore di ritorno (13.1/2) ma il mio compilatore
(MSVC 2008) e anche il comeau online accettano questo:
void foo()
{
}
template <typename T>
T foo()
{
return 0;
}
int main()
{
int a = foo<int>();
foo();
return 0;
}
Lo spirito mi sembra giusto: la foo template richiede all'utente di
specificare il tipo, quindi non c'è ambiguità.
Tra l'altro questo è proprio il meccanismo che viene usato per fare dei
cast definiti dall'utente (o meglio dalle librerie). Vedi ad. es.
boost::any_cast
Ma secondo lo std e' corretto? Perchè stando al citato 13.1/2 dovrebbe
non esserlo. O forse la versione template non viene considerata
overload? allora come è giusto chiamarla?
GM
[ Auf dieses Posting antworten ]
