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

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

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