C ++ гуру,
У меня есть вопрос метапрограммирования шаблона. Рассмотрим следующее
объявление функции.
int foo(const int x[], char *y, size_t size);
Я хотел бы иметь возможность генерировать тело функции следующим образом:
int foo(const int x[], char *y, size_t size)
{
return myfnc(x, y, size);
}
Есть ли способ сделать это с помощью метапрограммирования шаблона C ++? Я могу
«обернуть» объявление в некоторый макрос, но я бы хотел избежать использования
макросов, чтобы сделать полное расширение. Например, я был бы счастлив, если
Я могу написать что-то вроде:
DEFINE_FNC(foo, const int x[], char *y, size_t size)
, где DEFINE_FNC
определяется как
#define DEFINE_FNC(fnc, ...) \
int fnc(__VA_ARGS__) { \
return myfnc(__VA_ARGS__); \ // This doesn't work; is there something else that can be done here?
} \
Мне известно о упомянутом решении здесь , но это требует от меня
добавить скобки вокруг типов параметров, и я хотел бы
по возможности избегайте этого.
Я пытался использовать вариадические шаблоны, но это не помогло
Я хочу.