gpt4 book ai didi

c++ - 在 C++ 中将函数参数检索为元组

转载 作者:可可西里 更新时间:2023-11-01 18:26:48 25 4
gpt4 key购买 nike

考虑我有一个像这样的函数声明:

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 可以做到这一点。但是,我对它的实现原理很感兴趣。

最佳答案

您可以获得与您的参数类型相对应的元组类型,如下所示:

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);

这是你想要的吗?请注意,您可能需要添加一个或多个 function_args 重载,例如。为类方法采用类类型参数。

关于c++ - 在 C++ 中将函数参数检索为元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com