gpt4 book ai didi

C++ type_info 作为模板(类型名)参数

转载 作者:行者123 更新时间:2023-11-30 02:49:14 27 4
gpt4 key购买 nike

有没有办法在 C++ 中使用 const std::type_info& 作为模板参数?

例如

template < typename T > class A
{
public:
A(){}
const std::type_info& type() const
{
return typeid(T);
}
};

template < typename T > void Do()
{
// Do whatever
}

int main()
{
A<int> MyA;
// Something like: Do<MyA.type()>(); or Do<typeid(MyA.type())>();
}

最佳答案

您不能将运行时类型信息用作编译时模板参数。

在 C++11 中,decltype 可以为您提供表达式的静态类型:

Do<decltype(MyA)>();

从历史上看,最好的办法是使用另一个函数模板从其参数推断类型:

template <typename T> void Do(T const &) {Do<T>();}

Do(MyA);

关于C++ type_info 作为模板(类型名)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439278/

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