微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 在编译时生成类型为T的序列

我有以下问题:
template< typename callable,typename T,size_t... N_i>
void foo()
{
  using callable_out_type =  std::result_of_t< callable( /* T,...,T <- sizeof...(N_i) many */ ) >;

  // ...
}

我想获取调用的结果类型,它使用sizeof …(N_i)类型T的许多参数作为其输入,例如,在T == int和sizeof …的情况下可调用(1,2,3) (n_i个)== 3.如何实现?

提前谢谢了.

解决方法

为什么不简单地使用:
using callable_out_type = std::result_of_t< callable( decltype(N_i,std::declval<T>())...) >;

你也可以使用从Columbo’s answer借来的技巧:

using callable_out_type =  std::result_of_t< callable(std::tuple_element_t<(N_i,0),std::tuple<T>>...) >;

甚至:

using callable_out_type =  std::result_of_t< callable(std::enable_if_t<(N_i,true),T>...) >;

原文地址:https://www.jb51.cc/c/115535.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐