gpt4 book ai didi

c++ - 如何将模板化的类型名作为字符串获取?

转载 作者:行者123 更新时间:2023-11-30 01:30:24 29 4
gpt4 key购买 nike

以下代码在调用模板函数时打印出字符串“T”,而不是实际的类型名称。有没有办法在不向正在模板化的类型中添加任何内容的情况下获取真实的类型名?

#define stringify(a) #a
#define tostring(a) stringify(a)

template <typename T>
void function_foo(T a, T b)
{
cout << tostring(T) << endl;
...
}

最佳答案

模板不是那样工作的。在您的模板中,T 指定一个类型,而不是一系列标记:

typedef int lolztype;
typedef int lulztype;

function_foo<lolztype>(0, 0);
function_foo<lulztype>(0, 0); // calls the *same* template

无法分别获取lolztypelulztype。您可以尝试使用 typeid(T).name(),但这不是很有用,因为它不需要人类可读,甚至不需要区分每种类型。

您可以尝试使用 geordi's文件 type_strings.hpp ,它可以在使用 GCC 编译时打印出人类可读的字符串。

关于c++ - 如何将模板化的类型名作为字符串获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4519596/

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