У меня есть макрос, в котором я передаю аргумент:
#define bind(id) function[function_id::id] = std::bind(otherFunction::id, std::placeholders::_1)
В этом случае id
распространяется на все, что я пишу в макрос во время его использования.Однако я хотел бы добавить некоторые символы к одному из них, например:
#define bind(id) function[function_id::id] = std::bind(otherFunction::add_id, std::placeholders::_1)
, чтобы первая замена id
была оригинальной, а вторая - суффиксом add_
.Когда я делаю это второе расширение с add_
, оно не расширяется, поэтому я получаю add_id
вместо add_whatever_I_wanted
.
В этом случае я попытался использовать скобки и написать это так:
#define bind(id) function[function_id::id] = std::bind(otherFunction::add_(id), std::placeholders::_1)
И это сработало частично, теперь id
заключено в скобки и результат расширения равен
add_(whatever_I_wanted)
Вместо
add_whatever_I_wanted
Это убивает менякак я хочу использовать его довольно часто.Есть ли обходной путь?