[英]Variadic template wrapping function call
我需要一个宏/模板函数,该函数将在特定对象上包装某些方法的函数调用,即
a.Destroy()
其中a可以是任何类型,并且Destroy和Destroy可以或可以不使用0到n参数。 在这个包装器内,我需要做一些检查。
我希望能够将此函数作为包装器调用:
DESTROY_CHECK(a.Destroy(p1,p2,...))
要么
DESTROY_CHECK(a, Destroy(p1,p2,...))
我该如何实现?
您可以考虑可变参数宏 :
#define identifier( parameters, ... ) replacement-list
...定义了一个具有可变数量参数的类函数宏。 可以使用
__VA_ARGS__
标识符访问其他参数,然后将其替换为随替换标识符一起提供的参数。
#define DESTROY_CHECK(x, ...) assert(x.Destroy(__VA_ARGS__))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.