Ho una classe Filter
che ha il metodo process
sovraccarico per vari input.Alias per tutti i metodi sovraccaricati?
template< typename T >
class Filter
{
public:
void process(T arr[], size_t len);
T process(T one_value);
void process(std::array &arr);
void process(std::vector &v);
//... many other variants
using operator() = process; // How to write proper?
}
voglio semplificare il codice utente omettendo process
: filter.process(values)
diventerà filter(values)
. Non penso che scrivere un sovraccarico operator()
per ogni variante sia una buona idea. Ci deve essere una soluzione più conveniente?
Se si desidera completamente bypass tipo controllo dal compilatore e potenzialmente introdurre un sacco di bug sottili, poi certo, andare avanti. –
Non è possibile aggirare alcun tipo di controllo, non ci sono conversioni. 'process' riceverà gli argomenti come forniti a' operator() '. – Niall
@DanKorn Penso che sia piuttosto comune rispondere al tag 'C++' con codice C++ che aderisce allo standard corrente. Cioè, non penso che il tag 'C++' implichi C++ 03 o qualsiasi altro standard specifico. –