У меня возникли проблемы с реализацией этого в унаследованном C++, но я уверен, что это можно сделать. Скажем, у меня есть функцию высшего порядка, который нуждается в двух вариантах, один для одинарных (вызываемых объектов функциональных объектов, функции, функции-члены)Отправка бинарных и унарных вызовов в C++ 03
template <class F>
void ho_fun(F argFun) {
int arg1;
argFun(arg1);
}
и один двоичный:
template <class F>
void ho_fun(F argFun) {
int arg1, arg2;
argFun(arg1, arg2);
}
Я ищу для полное решение с точки зрения «вызываемого типа» (в противном случае я, очевидно, использовал бы arity из функций для этого), т. е. поддержка функций и объектов функции.
Я переводил this прекрасное сообщение на C++ 03 (удалите ...
и using
typedefs), но он не работает.
PS. Я не решаю проблему, указанную выше, это всего лишь sscce. Также я упоминаю C++ 03, потому что я работаю над устаревшим кодом для этого проекта, и современное решение мне бесполезно. Во что бы то ни стало, не стесняйтесь публиковать современные, но, пожалуйста, подумайте о том, чтобы помочь мне.
I не понимаю. Код в вопросе не работает, но вы все равно не хотите знать, что с ним не так? – NathanOliver
Правильный способ сделать это - это varadics. Почему вы пытаетесь избавиться от '...' s? –
@NathanOliver Обычно мои примеры ошибочно принимают за фактическую проблему, которую я хочу решить. Фактической проблемой является «отправка для унарного и двоичного кода», я упоминаю PS, чтобы избежать ответов, таких как «передать другой аргумент» или «создать дополнительную перегрузку» –