gpt4 book ai didi

c++ - `struct decay`是什么意思

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:49 24 4
gpt4 key购买 nike

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

它的确切含义是什么?我需要一些帮助~

最佳答案

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

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

... 是 C 风格的可变参数,不要与同样使用 ... 的可变模板参数混淆。

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

这部分是 boost::hanastd::decay 优化版本的实现。 typename TT 部分是红色鲱鱼,是该优化的一部分。

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

如果您将 double(int, char, ...) 作为此 hana::details::decay 的第二个参数传递,R 将是 doubleA... 将是 int, char。而 ... 将“匹配 C 风格的可变参数”。

这个特殊化的目的是将以 C 风格可变参数结尾的函数签名映射到指向相同签名的指针。所以它将 double(int, char, ...) 映射到 double(*)(int, char, ...)

C 风格的可变参数与模板可变参数不同。他们早于它。

关于c++ - `struct decay<T, R(A..., ...)>`是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43047347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com