Kar*_*nek 7 c++ tuples function
考虑我有这样的函数声明:
void foo(int x, float y);
class X {
void anotherFoo(double a, int c);
};
Run Code Online (Sandbox Code Playgroud)
如何获得与函数参数对应的元组?在上述情况下,它将是:
boost::tuple<int, float>
boost::tuple<X*, double, int>
Run Code Online (Sandbox Code Playgroud)
或者更好的结果类型为第0个元素:
boost::tuple<void, int, float>
boost::tuple<void, X*, double, int>
Run Code Online (Sandbox Code Playgroud)
我知道boost::function_types::parameter_types可以做到这一点.但是,我对如何实施的原则感兴趣.
Use*_*ess 10
你可以得到的元组类型对应你的说法的类型,就像这样:
template <typename R, typename... T>
std::tuple<T...> function_args(R (*)(T...))
{
return std::tuple<T...>();
}
// get the tuple type
typedef decltype(function_args(foo)) FooArgType;
// create a default-initialised tuple
auto args = function_args(foo);
Run Code Online (Sandbox Code Playgroud)
那是你要的吗?请注意,您可能需要添加一个或多个重载function_args,例如.为类方法提取类类型参数.
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |