在模板中显示参数类型

gjvdkamp

我试图绕过参考崩溃(https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996上的项目28 ),并想玩弄各种东西来模板。

我用左值和ravlue调用模板,但是在模板中看不到确切的类型。如何让编译器在专门用于模板的时间内吐出确切的类型?

#include <iostream>
#include <typeinfo>

class Widget{
public:
    int x=0;
};


template<typename T>
void MyMethod(T&& param){
    std::cout << typeid(param).name()<< std::endl; // this just says 6Widget...
};

Widget GetWidget(){
    return Widget();
};

int main() {

    Widget &w1 = * new Widget;
    MyMethod(w1);

    Widget w2;
    MyMethod(w2);

    MyMethod(GetWidget());

    return 0;
}

这只是输出

6Widget
6Widget
6Widget

编译器有什么办法吐出它为调用模板所做的确切的专业化和类型?

拉诺埃耶特普

真的很棒。好像您跳了很多章。

在第4项中,您将看到如何使用Boost.TypeIndex来做到这一点,并具有:

std::cout << boost::typeindex::type_id_with_cvr<decltype(param)>().pretty_name();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

让GDB显示模板参数的类型

来自分类Dev

根据输入参数类型在模板中显示 div

来自分类Dev

确定模板中模板参数的类型

来自分类Dev

实例化模板时,是否必须在参数包中显式显示类型?

来自分类Dev

如何从模板参数包中删除类型?

来自分类Dev

使用模板参数中的成员类型

来自分类Dev

播放模板中的“缺少参数类型”

来自分类Dev

如何提取模板参数中传递的类型?

来自分类Dev

如何从模板参数包中删除类型?

来自分类Dev

使用模板参数中的成员类型

来自分类Dev

播放模板中的“缺少参数类型”

来自分类Dev

具有类型和模板模板参数的模板类中类型参数的部分专业化

来自分类Dev

在流星模板中显示用户参数

来自分类Dev

函数模板中返回类型的模板参数推导

来自分类Dev

参数和返回类型中的模板类型推导

来自分类Dev

参数类型模板类型中的泛型 lambda auto

来自分类Dev

模板模板非类型参数

来自分类Dev

模板参数类型推导

来自分类Dev

模板作为参数类型

来自分类Dev

非模板类型参数

来自分类Dev

模板非类型参数?

来自分类Dev

可变参数模板继承中的类型不匹配

来自分类Dev

模板参数中的相同长度的相同符号整数类型

来自分类Dev

函数和继承中的非类型模板参数

来自分类Dev

可以在可变参数模板中推导容器类型吗?

来自分类Dev

配对从可变参数模板中随机获得的兼容类型

来自分类Dev

将任意数量的类型插入到模板参数包中

来自分类Dev

模板功能中的默认参数值,取决于类型

来自分类Dev

通过索引访问可变参数模板中的类型