gpt4 book ai didi

c++ - int&& 和 template T&& 的区别

转载 作者:行者123 更新时间:2023-11-28 02:44:24 25 4
gpt4 key购买 nike

<分区>

#include <iostream>
#include <typeinfo>

struct C
{
template<class T>
C(T && t) { std::cout << typeid(T).name() << std::endl; }
};

struct D
{
D(int && t) { }
};

int main()
{
int i = 1;
std::cout << typeid(i).name() << std::endl;

C c(i); // OK
D d(i); // error
}

D d(i); 行编译失败:

foo.cc:22:7: error: cannot bind 'int' lvalue to 'int&&'

然而,将其注释掉,生成的输出是:

i
i

这表明 T 被推断为 intD(int &&)绑定(bind)失败而C(int &&)绑定(bind)成功是怎么回事?

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