gpt4 book ai didi

c++ - int&& 在模板实例化中有效吗?

转载 作者:太空狗 更新时间:2023-10-29 20:15:46 25 4
gpt4 key购买 nike

考虑下面的代码。那里发生了什么?

#include <iostream>
#include <stdio.h>

using namespace std;

template<class T>
void test(T &t) // but why int&& is valid here,when instantiated with test<int&>??
{
puts("T&");
}

int tref(int&& param) //compile error
{
puts("tref&");
}

int main()
{
int i;
test<int&>(i);
}

最佳答案

我不确定我是否理解,如果你的意思是第一个中的 int&& 因为 Tint& 你错了。当Tint&时,签名中的T&仍为int&。此外,int&& 与将 int& 与额外的 & 组合起来没有任何关系。 && 具有特定含义:rvalue-reference

§8.3.2[dcl.ref]/5

There shall be no references to references, no arrays of references, and no pointers to references. [...]

§8.3.2[dcl.ref]/6

If a typedef (7.1.3), a type template-parameter (14.3.1), or a decltype-specifier (7.1.6.2) denotes a type TR that is a reference to a type T, an attempt to create the type “lvalue reference to cv TR” creates the type “lvalue reference to T”, while an attempt to create the type “rvalue reference to cv TR” creates the type TR.

关于c++ - int&& 在模板实例化中有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999037/

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