Ho una classe A:implicita conversione a un oggetto C++ template
template <typename T, int I> struct A {};
e una classe B. Vorrei oggetto di di tipo B per convertire in modo implicito alla A quando somministrato come argomenti della funzione. B si presenta così:
template <typename T>
struct B {
operator A<T,0> &() const { return *new A<T,0>(); }
};
Tuttavia, la mia prova (sotto) non riesce con GCC 4.5, dando l'errore: funzione di nessuna corrispondenza per la chiamata al 'test (B &)' Dove sto andando male qui? Anche altri compilatori lo rifiutano?
template <typename T, int I>
void test(A<T,I> &a) { delete &a; }
int main(int argc, char *argv[])
{
B<int> b;
test(b);
return 0;
}
p.s. Ora ho inserito la mia soluzione in una risposta qui sotto.
rilevo la perdita di memoria, ma sembra come se questo è stato appena messo insieme per mostrare il problema, quindi non lo farò. Invece inviterò. :-) – James
classe? -------- –
Grazie James :) Risolto. – user2023370