SomeProp, ArgumentsTypes Args...)
{
CallOtherFunc(SomeProp, ConvertArg(Args)...);
}
Как мне ее представить через макрос? Я пытаюсь записать таким образом:
#define CallMacro(SomeProp, ...) CallOtherFunc(SomeProp, ConvertArg(__VA_ARGS__) )
Но есть ошибка в ConvertArg, так как ConvertArg принимает только один аргумент.
В макросе мне судя по всему нужно каким-то образом пройтись по каждому аргументу в VA_ARGS, вызвать для него ConvertArg() и вернуть новые значение
Боюсь просто вызвать для каждого аргумента vararg макроса не получится Люди придумывают обход через создание кучи макросов, которые вызывают другие макросы, глянь, может помочь И зачем нужно через макрос, если работает через шаблоны?
Это долгая история почему, но в один момент выяснилось, что шаблоны очень много занимают места и используют повторяющийся код, что не удобно. Понял, спасибо за инфу. Похоже через макросы такое красиво сделать невозможно)
типа: Перегрузка0(...) Перегрузка1(ARG, ...) ConverArg(ARG) Перегрузка2(ARG, ...) ConverArg(ARG), Перегрузка1(__VA_ARGS__) Перегрузка3(ARG, ...) ConverArg(ARG), Перегрузка2(__VA_ARGS__) ВыбратьПерегрузку(...) /* реализация */ CallMacro(SomeProp, ...) CallOtherFunc(SomeProp, ВыбратьПерегрузку(__VA_ARGS__) )
Интересно, что же мне делать, если аргументов могут быть сотни) Спасибо за информацию, буду копать дальше
автогенерировать как и сами функции с сотней аргументов
Кстати, еще одна проблема - вернуть новые (сконвертированные) значения обратно) К слову, новые значения должны быть других типов. В общем задача макросами не реализуемая по видимому :)
автогенерировать макросы? Не слышал об этом
Посмотри в бусте. Там есть либа для макросни и обхода аргументов и т.д.
Как она называется интересно) буст большой. Можешь примерно название сказать как называется?
Boost Preprocessor
Но это очень весело отлаживать. Так что как знаешь
Обсуждают сегодня