【发布时间】:2011-11-22 09:37:27
【问题描述】:
假设我有这样的函数声明:
void foo(int x, float y);
class X {
void anotherFoo(double a, int c);
};
如何获得与函数参数对应的元组?在上述情况下,它将是:
boost::tuple<int, float>
boost::tuple<X*, double, int>
或者将结果类型作为第 0 个元素甚至更好:
boost::tuple<void, int, float>
boost::tuple<void, X*, double, int>
我知道boost::function_types::parameter_types 可以做到这一点。不过,我对它的实现原理很感兴趣。
【问题讨论】:
-
我会使用
struct。使用元组的目的/优势是什么? -
@kol 减少样板代码,减少噪音
-
您的意思是要在编译时或运行时自动生成元组类型,还是要从 regs / stack 中提取参数,或两者兼而有之,还是其他?跨度>
-
它应该是所有编译时间 - 我只需要作为结构/元组的参数,以便我可以在元编程中使用它们。
-
您是否尝试过阅读提升资源?