gpt4 book ai didi

c++ - 为什么我们需要引用折叠规则

转载 作者:行者123 更新时间:2023-11-28 03:08:06 25 4
gpt4 key购买 nike

大家可能都知道我们使用右值引用结合引用折叠规则来构建完美的转发函数,就像这样

template<typename T>
void f(T&& arg) {
otherfunc(std::forward<T>(arg));
}

f(4);

引用折叠规则是这样的

+------+-----+--------+
| T | Use | Result |
|------|--------------|
| X& | T& | X& |
| X& | T&& | X& |
| X&& | T& | X& |
| X&& | T&& | X&& |
+------+-----+--------+

所以在我的例子f中,Tint&&T&&int&& && 折叠成 int&&

我的问题是,如果 T 已经推导为 int&&,为什么我们需要这些规则?为什么会

template<typename T>
void f(T arg);

f(4);

如果 Tint&&,则变成 void f(int) 而不是 void f(int&&)?如果 T 确实是 int 并且 T&& 是使它成为 int&& 的原因,因此 void f(int&& ),那么为什么我们需要引用折叠规则,因为它们似乎从未应用过?以我有限的知识,我只能说出这两个选项,所以显然有一条我不知道的规则。

查看标准中有关此的引用也会有所帮助。

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