C++ 在C++;?(不是右值引用)
如果我有C++ 在C++;?(不是右值引用),c++,reference,C++,Reference,如果我有 typedef int& intr; typedef intr& intrr; 我可以申报 int x = 7; intrr y = x; 但是什么是引用引用?intrr和intr在语义上有什么不同吗?没有对引用的引用。C++标准明确地表示: §8.3.3/5 不得提及参考文献 在typedef和templates中,有一条规则通常被称为“引用折叠”。同一节第6段对此进行了描述: 如果类型定义(7.1.3)、类型模板参数(14.3.1)或 decltype说明符(7
typedef int& intr;
typedef intr& intrr;
我可以申报
int x = 7;
intrr y = x;
但是什么是引用引用?intrr和intr在语义上有什么不同吗?没有对引用的引用。C++标准明确地表示: §8.3.3/5 不得提及参考文献 在typedef和templates中,有一条规则通常被称为“引用折叠”。同一节第6段对此进行了描述: 如果类型定义(7.1.3)、类型模板参数(14.3.1)或 decltype说明符(7.1.6.2)表示类型
TR
,它是对类型T
的引用,试图创建类型“cv的左值引用”
TR
”创建类型“对T
的左值引用”,同时尝试
创建类型“对cv的右值引用TR
”创建类型TR
[示例:
-[结束示例]
示例中的intr
和intrr
是完全相同的类型,即int&
#include <iostream>
#include <type_traits>
int main()
{
typedef int& intr;
typedef intr& intrr;
int x = 7;
intrr y = x;
std::cout << std::is_same<intr, intrr>::value;
std::cout << std::is_same<int&, intrr>::value;
std::cout << std::is_same<int&, intr>::value;
}
#包括
#包括
int main()
{
typedef int&intr;
类型定义intr&intrr;
int x=7;
intrry=x;
std::cout-hmm,另一个相关问题:
#include <iostream>
#include <type_traits>
int main()
{
typedef int& intr;
typedef intr& intrr;
int x = 7;
intrr y = x;
std::cout << std::is_same<intr, intrr>::value;
std::cout << std::is_same<int&, intrr>::value;
std::cout << std::is_same<int&, intr>::value;
}