Vorrei essere in grado di scrivere qualcosa in queste righe:È legale utilizzare modelli variadici nell'overloading dell'operatore?
struct bar {};
template <typename ... Args>
bar operator+(bar, Args ...)
{}
Ho appena controllato con clangore/gcc e l'operatore di overload viene prelevato sia da espressioni binari (a+b
) e le espressioni unari (+a
), come mi aspetterei. Tuttavia gli operatori sono più limitati delle normali funzioni, nel senso che - per esempio - non è possibile sovraccaricare lo operator+()
con tre argomenti.
L'utilizzo è legale e portatile?
EDIT Per dare un po 'di contesto, chiaramente non mi aspetto di poter definire operatori variadici o qualcosa del genere. La ragione per cui sono interessato a questo è per un brutto scherzo: mi piacerebbe fare alcuni operatori variadici in modo da poterli "sovrascrivere" con altre implementazioni non-variadiche. Poiché i modelli variadici sono considerati meno specializzati dei modelli non-variadici nelle regole di sovraccarico dei modelli di funzione, potrei ignorare un operatore variadico con uno non-variadico. Sì, è piuttosto orrendo :)
Grazie per la risposta, ho ho aggiunto un po 'di contesto alla domanda originale. – bluescarni
@bluescarni Sì, va tutto bene. – Columbo