为什么将typeid(T&)。name()的输出指定为T而不是T&`?

问题描述 投票:1回答:1

作为主题,您可以检查https://godbolt.org/z/qtjVP6上的相关代码。

为了方便起见,代码发布在下面:

#include<typeinfo>
#include<iostream>

class Widget{};

Widget someWidget;

int main()
{
    Widget&& var1 = Widget{};      // here, “&&” means rvalue reference
    auto&& var2 = var1;              // here, “&&” does not mean rvalue reference

    std::cout << typeid(var2).name() << std::endl;
}

输出:6Widget

[echo 6Widget | c++filt -tWidget

我很高兴在这个问题上有所帮助。

c++ c++11 typeinfo
1个回答
0
投票

C++ Reference(强调我的意思:):>>

1]引用表示类型类型的std::type_info对象。如果type是引用类型,则结果引用表示[。

std::type_info对象。因此,对于type = T&typeid(type)将给出有关T的结果(已删除参考)。

IMO很容易理解,因为出于所有目的,类型为T&的变量在功能上等同于类型为T的一个。

© www.soinside.com 2019 - 2024. All rights reserved.