c – “struct decay”的含义是什么?

template <typename T,typename R,typename ...A>
struct decay<T,R(A...,...)> { using type = R(*)(A...,...); };

这究竟是什么意思?我需要一些帮助〜

解决方法

int foo(int);
int bar(int,...);

这是两个不同的功能. foo的类型为int(int). bar的类型为int(int,…).

…是C风格的varargs,不要与使用的变量模板参数混淆….

template <typename T,...); };

这部分是在boost :: hana中实现std :: decay的优化版本. typename T和T部分是红色鲱鱼,是优化的一部分.

它是一个匹配R(A …,…)的特化,其中A …和R是从函数签名中推导出来的.

如果你传递double(int,char,…)作为这个hana :: details :: decay的第二个参数,R将是double,A …将是int,char.并且…将“匹配C风格的varags”.

这种特殊的专业化的目的是将以C风格的变量结尾的函数签名映射到指向相同签名的指针.所以它将double(int,…)映射到double(*)(int,…).

C style varargs与模板variardic参数不同.他们早于它.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...