gpt4 book ai didi

c++ - 在 typeid(SOME_TYPE).name() 中返回别名标识符而不是类型

转载 作者:行者123 更新时间:2023-11-27 23:47:31 25 4
gpt4 key购买 nike

在下面的例子中

template <typename T>
void foo() {
const char* name = typeid(T).name();
std::cout << name;
}

变量“name”将由类型“T”name 初始化。如果我们需要打印这个模板类型名称,那是非常方便的。但是,如果我们有别名:

using shortTypeName = std::smth::smth_else::smth_more;

调用结果

foo<shortTypeName>();

将打印“std::smth::smth_else::smth_more”。我需要准确打印别名,而不是它定义的类型。有人可以给我一个建议,我该怎么做?

最佳答案

... alias identificator ...

没有这样的东西,至少在编译之后没有。它只是语法糖,在最终可执行文件中不存在任何意义。

唯一获取类型的本地名称(与实现定义的和可能被破坏的 typeid 名称相反)的方法是使用 stringize/stringify 宏。


为了将来引用,当 Reflection TS 时,这应该最终成为可能。 lands - 但我还不知道是否期望它看起来像 refflexpr(T).get_name()std::meta::name_of(^T),或者别的东西。

关于c++ - 在 typeid(SOME_TYPE).name() 中返回别名标识符而不是类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49411422/

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