返回 C++ 中函数的最后一个参数的通用包装器
我们已经编写了一个大型库函数,其原型大多如下所示:
void my_fun(
const in_class & in_param_1,
const in_class & in_param_2,
const in_class & in_param_3,
out_class & out_param);
是否有一种通用方法来包装这些函数,以便以下内容等效(假设 out_param 只写入 my_fun 中):
out_class my_out;
my_fun(my_in1,my_in2,my_in3,my_out);
以及
out_class my_out = generic_wrapper(&my_fun,my_in1,my_in2,my_in3);
如何编写这样一个 generic_wrapper?如果这是可能的,也可以编写它,以便输入参数的数量是可变的,这样我就可以将它与 my_fun2 一起使用,它可能需要 4 个 in_param_ 的?
We have written a large library functions whose prototypes mostly look like:
void my_fun(
const in_class & in_param_1,
const in_class & in_param_2,
const in_class & in_param_3,
out_class & out_param);
Is there a generic way to wrap these functions so that the following is equivalent (assuming out_param is only written to in my_fun):
out_class my_out;
my_fun(my_in1,my_in2,my_in3,my_out);
and
out_class my_out = generic_wrapper(&my_fun,my_in1,my_in2,my_in3);
How could one write such a generic_wrapper? If this is possible it also possible to write it so that the number of input parameters is variable, so I could use it say with my_fun2 that perhaps takes 4 in_param_'s?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
考虑所有情况:
Consider all cases:
使用 C++11 的可变参数模板,可以像这样实现包装器:
并且我已将 last_argument_type 实现为:
完整示例位于 http://ideone.com/ef3zD
With variadic templates of C++11, it would be possible to implement the wrapper like this:
and I've implemented last_argument_type as:
Full example at http://ideone.com/ef3zD
在 C++0x 中,我们还可以尝试使用可变参数模板:
但我无法在不明确指定模板参数的情况下使用它(GCC 4.6.1):
In C++0x we could also try using variadic template:
but I cannot use it w/o speficying template args explicitly (GCC 4.6.1):