Variadic模板包装函数调用

时间:2016-11-09 14:46:10

标签: c++ templates variadic-templates variadic-macros

我需要一个宏/模板化函数,它将某些方法的函数调用包装在特定对象上,即

a.Destroy()

其中a可以是任何类型以及Destroy和Destroy可能会也可能不会采用0到n个参数。在这个包装器里面,我需要做一些检查。

我希望能够将此函数称为包装器:

DESTROY_CHECK(a.Destroy(p1,p2,...))

DESTROY_CHECK(a, Destroy(p1,p2,...))

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以考虑variadic macro

#define identifier( parameters, ... ) replacement-list
     

...定义一个具有可变数量参数的类函数宏。可以使用__VA_ARGS__标识符访问其他参数,然后将其替换为带有要替换的标识符的参数。

#define DESTROY_CHECK(x, ...) assert(x.Destroy(__VA_ARGS__))
相关问题