Не сложный способ перегрузки MACROS с нулевым, одним, двумя аргументами
на основе этого комментария
Я хочу перегрузить один / два аргумента и, если возможно, 0 аргументов, но с минимальным количеством строк макросов.
Теперь я сделал в следующем режиме
// For 1..2 arguments, we get 4 rows
#define GET_MACRO(_1,_2, NAME,...) NAME
#define FOO(...) GET_MACRO(__VA_ARGS__, FOO2, FOO1)(__VA_ARGS__)
#define FOO1(x) ABC(F(x))
#define FOO2(x,y) ABC(F(x), F(y))
FOO(x) -> ABC(F(x))
но у меня есть два вопроса
- возможно ли сделать это с менее чем 4 строками?
возможно ли перегрузка на 0 аргументов в следующем режиме
FOO() -> ABC()
Обновление: 2-й вопрос больше не актуален. Так что теперь у меня для 0..2 arg - 5 строк. Для 1..2 арг - 4 ряда. Таким образом, каждый дополнительный func_n_arg () должен иметь отдельный конвертер + 2 строки для подсчета аргументов. Можно ли сделать меньше строк макросов? за то же самое