c++ - 表示函数参数的元组的类型表达式

标签 c++ c++11 variadic-templates

我正在寻找一种方法来为表示函数所需参数的 std::tuple 创建类型表达式。请考虑以下事项:

template<typename F, typename ...args>
void myfunction(F&& function, A... args)
{
    std::tuple</*???*/> arguments;
    populate_tuple(arguments,args...);
    return apply(function,arguments);
}

... 其中 F 是普通函数类型,apply() 是将参数应用于函数的函数,而 populate_tuple() 在用最终结果填充元组之前对参数做一些工作(包括类型转换)函数调用的参数。

注意:我不能在元组声明中使用 args...,因为它们不是函数是预期的 - populate_tuple() 进行转换。

我感觉好像编译器拥有执行此操作所需的一切,但我不知道该语言是否支持它。有任何想法吗?所有帮助表示赞赏。

最佳答案

也许是这样的:

template <typename T> struct TupleOfArguments;

template <typename R, typename ... Args>
struct TupleOfArguments<R(Args...)> {
  typedef std::tuple<Args...> type;
};

Demo

关于c++ - 表示函数参数的元组的类型表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34707832/

相关文章:

c++ - GL_32F 和 glReadPixels

android - 如何使用 JNI 将 C++ char 2d 数组返回到 JAVA

c++ - 不理解条件变量超时

c++ - C++中没有参数可变参数模板函数

c++ - 涉及非推导参数包的函数指针参数类型模板实参推导

c++ - 字符串化任意数量的变量

c++ - 使用 SFINAE 解决过载歧义

c++ - 如何检查类型是否存在无参数运算符()

c++ - 更具体的模板推导

c++ - 将委托(delegate)作为回调传递给 native C++ API 调用