gpt4 book ai didi

c++ - 编译时输出一个模板类名

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:05:03 24 4
gpt4 key购买 nike

我想知道是否有可能在编译时知道并输出一个模板类名。它看起来像这样:

template<typename T>
class SomeTemplateClass
{
SOME_WAY_TO_PRINT_CLASS_NAME(T)
};

然后,每次调用模板类,例如:

using C = SomeTemplateClass<std::string>;

SomeTemplateClass<std::string> instance;

编译器会回显如下消息:

note: Template argument of SomeTemplateClass is std::__cxx11::basic_string<char>

就我的搜索而言,我找到了一种方法,它使编译器崩溃以提供类的类型:

template<typename T>
class SomeTemplateClass
{
public:
using print = typename T::expected_crash;
};

using C = SomeTemplateClass<std::string>;

int main()
{
C::print err;
return 0;
}

这给出了:

error: no type named ‘expected_crash’ in ‘class std::__cxx11::basic_string<char>’

但这与其说是一个干净的解决方案,不如说是一种黑客攻击,我想知道是否还有其他解决方案来解决这个问题。

谢谢!

最佳答案

您可以使用 typeid(T).name() 来确定类的名称。

关于c++ - 编译时输出一个模板类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004587/

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