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?
} \
我知道提到的here解决方案,但这需要我 在参数类型周围加上括号,我想 尽可能避免这种情况。
我尝试使用可变参数模板,但是它并没有做确切的事情 我想要。
答案 0 :(得分:0)
template <typename Args...>
int foo(Args&&... args) {
return myfnc(std::forward<Args>(args)...);
}
如果您愿意的话,可以用宏标记这些定义。