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

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参数不同.他们早于它.

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

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

相关推荐