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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/c/115535.html

猜你在找的C&C++相关文章