У меня есть класс Filter
, который имеет метод process
, перегруженный для различных входов.Псевдоним для всех перегруженных методов?
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?
}
Я хочу, чтобы упростить код пользователя минуя process
: filter.process(values)
станет filter(values)
. Я не думаю, что писать перегруженный operator()
для каждого варианта - хорошая идея. Должно существовать более удобное решение?
Если вы хотите полностью байпас проверки типов компилятора и потенциально ввести много тонких ошибки, то конечно, идти вперед. –
В обход каких-либо проверок нет никаких конверсий. 'process' получит аргументы, предоставленные' operator() '. – Niall
@DanKorn Я думаю, что довольно часто приходится отвечать на тег 'C++' кодом C++, который придерживается текущего стандарта. То есть, я не думаю, что тег 'C++' подразумевает C++ 03 или любой другой конкретный стандарт. –