gpt4 book ai didi

c++ - 左值绑定(bind)到右值引用

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

我想了解左值如何绑定(bind)到右值引用。考虑这段代码:

#include <iostream>

template<typename T>
void f(T&& x) {
std::cout << x;
}

void g(int&& x) {
std::cout << x;
}

int main() {
int x = 4;
f(x);
g(x);
return 0;
}

虽然调用 f() 没问题,但调用 g() 会出现编译时错误。这种绑定(bind)是否仅适用于模板?为什么?我们可以在没有模板的情况下以某种方式做到这一点吗?

最佳答案

由于 T 是一个模板参数,T&& 成为一个转发引用。由于引用折叠规则,对于左值,f(T& &&) 变为 f(T&)f(T &&) 变为 f (T&&) 用于右值。

关于c++ - 左值绑定(bind)到右值引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126485/

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