nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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++
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 ]