gpt4 book ai didi

c++ - 怎么可能写 f( *this, std::forward(args)... ) 而 f 只用 F f 声明;

转载 作者:行者123 更新时间:2023-11-28 01:15:11 26 4
gpt4 key购买 nike

在这个回复中 https://stackoverflow.com/a/58737595拜托,你能解释一下怎么写吗:

return f( f, std::forward<Args>(args)... );

而 f 仅声明为: F f;而且我们不知道 f 是一个先验接受 2 个参数的函数。谢谢你的解释。

如果有深入的解释,我将不胜感激

最佳答案

看来您需要一些很好的 C++ 教程/书籍,特别是关于模板的。

您所指的这段代码是一个模板化的结构

template<class F>
struct y_combinator {
F f;
/* more code */
}

这意味着无论何时我们要使用它,我们都必须指定模板参数。

y_combinator<int> y_int;

当我们像这样使用模板化的struct时,编译器会生成一个新的struct,我们称它为y_combinator_int,并替换所有出现的F code> 与 int

重要的是模板使用鸭子类型,如果你做了一些非法/没有意义的事情,你会得到一个编译时错误(目前这样的错误真的很难读懂,但是对于 C++20 我们可能会得到更多人类可读的错误)。

整体模板是一个非常复杂的主题,如果你想学习它们,你需要找到一本好的教程/书籍。

关于c++ - 怎么可能写 f( *this, std::forward<Args>(args)... ) 而 f 只用 F f 声明;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58932051/

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