如何定义依赖于参数包转换的函数的返回类型?

订购

我正在尝试编写一个模板化的函数,该函数以可变对的输入为输入,对每个“第一个”成员和每个“第二个”成员应用某个函数,并返回结果对。我设法编写了函数本身,但无法获得自动推断的返回类型。如何使用std::result_of以获得期望的结果?

我的尝试如下:

template<typename Output, typename Func, typename... Inputs>
std::pair<Output, Output> fmap(Func&& f, Inputs&&... inputs)
{
  using Out = typename std::result_of<Func(decltype(inputs.first)...)>::type;
  return std::pair<Out, Out>(f((inputs.first)...),
                             f((inputs.second)...));
  // Here I would like Out to be the same type as Output
}

int add(int i, int j)
{
  return i + j;
}

int main()
{
  std::pair<int, int> pair{1, 2};
  std::pair<int, int> pair2{4, 5};
  auto res = fmap(add, pair, pair2);
  // Crashes with template argument deduction failed, couldn't deduce Output
  std::cout << res2.first << " " << res2.second << std::endl;
  return 0;
}
泰克

我想这就是你想要的

template<typename Func, typename... Inputs>
auto fmap(Func&& f, Inputs&&... inputs) 
-> std::pair<typename std::result_of<Func(decltype(inputs.first)...)>::type, typename std::result_of<Func(decltype(inputs.first)...)>::type>
{
  using Out = typename std::result_of<Func(decltype(inputs.first)...)>::type;
  return std::pair<Out, Out>(f((inputs.first)...),
                             f((inputs.second)...));
}

https://wandbox.org/permlink/TE6v3vgyOBumHCKV

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何让Typescript知道依赖于传入参数的函数的返回类型

如何为依赖于Rust中泛型类型参数的结构的关联函数定义不同的实现?

使用依赖于lambda函数的类型作为返回类型

如何返回依赖于两个函数的函数?

朱莉娅:如何正确定义使用依赖于数字的类型的函数?

如何定义依赖于模板参数的typedef的typedef

如何使数组的大小依赖于构造函数参数?

如果仅依赖于其自身的模板参数,该函数类型是否依赖?

简洁的评估:如何在依赖于%>%管道的自定义函数中使用dplyr :: na_if作为可选参数

依赖于泛型参数作为函数的值参数的类型

C#泛型-返回类型依赖于参数的列表。

在依赖于模板类型的模板化函数参数中期望嵌套属性

类型别名如何使用来指定依赖于模板参数的模板模板参数?

如何返回包含/依赖于Observable <B>类型的Observable的Observable <A>类型的Observable?

如何指定依赖于单独类型的闭包借用绑定的生存期?

Hyperopt:定义依赖于其他参数的参数

如何找出其他包依赖于特定包?

在Keras中使用ImageDataGenerator时,如何定义依赖于输入的自定义成本函数?

pytest我如何模拟依赖于其父调用参数的函数调用的副作用

如何有一个依赖于类的模板参数的成员函数实现?

如何将我的函数 arg 类型设置为相互依赖于配置结构?

如何在 Kotlin/Arrow 中调用依赖于多个类型类的多态函数

如何使用PyFMI定义依赖于模拟FMU输出的输入函数?

如何在pytorch中定义依赖于模型wrt输入的偏导数的损失函数?

如何创建依赖于Rcpp共享库的R包?

不允许依赖于Julia中类型定义中整数类型参数的表达式

如何返回依赖于using语句链的对象?

如何定义依赖于输入的某些修改的Shake规则

打字稿:如何让第二个参数类型依赖于第一个参数值