Ho una funzionetipo restituito sconosciuta nel modello
template <typename T1, typename T2>
/*return type*/ foo(MyClass<T1>& bar1, MyClass<T2>& bar2)
{
if (something)
return bar1;
else
return bar2;
}
Il problema è che io non so che cosa sarà questa funzione di ritorno: può essere sia MyClass<T1>
o MyClass<T2>
.
Come posso farlo funzionare?
T1 e T2 sono strutture di 3 inte, note al momento della compilazione. Il tipo di reso dipende dallo più piccolo di quelli 2: ad esempio per T1 = <5, 1, 1>
T2 = <4, 4, 7>
il tipo di reso deve essere MyClass<T2>
.
Esempio utilizzo:
MyClass<5, 2, 8> m1;
MyClass<4, 2, 1> m2;
cout << foo(m1, m2); //should print m2 (I have a method used for that)
è 'something' un tempo di compilazione o condizione di esecuzione? –
Sì, buono per sapere se è tempo di compilazione o runtime ... – AlexTheo
Modificato per rispondere a questa domanda. –