c – 是否可以在模板化类之外获取指定的模板类型?

c – 是否可以在模板化类之外获取指定的模板类型?,第1张

概述这是我正在尝试做的简化版本 template <typename T>class myClass {};auto p = new myClass<int32_t>;int TSizeOfP = sizeof(??); 所以我想从对象指针获取我在myClass之外设置为int32_t的T. 显然我知道我把它设置为什么所以我可以做= sizeof(int32_t)但我希望能够只声明一次类型而不 这是我正在尝试做的简化版本

template <typename T>class myClass {};auto p = new myClass<int32_t>;int TSizeOfP = sizeof(??);

所以我想从对象指针获取我在myClass之外设置为int32_t的T.

显然我知道我把它设置为什么所以我可以做= sizeof(int32_t)但我希望能够只声明一次类型而不必遍历我编写sizeof(int32_t)的所有地方,如果我决定改变类型.

我也可以做一些像#define pType int32_t或者使用语句或其他什么的东西,但是如果有办法没有额外的行,我想听听它.

解决方法 您可以编写具有部分特化的模板类,并使用辅助函数来完成它.

template <typename T>struct template_parameter_type {};template <typename T,template <typename> class C>struct template_parameter_type<C<T>> {    typedef T type;};template <typename T>auto get_size(T*) {    return sizeof(typename template_parameter_type<T>::type);}

然后

auto p = new myClass<int32_t>;int TSizeOfP = get_size(p);

LIVE

总结

以上是内存溢出为你收集整理的c – 是否可以在模板化类之外获取指定的模板类型?全部内容,希望文章能够帮你解决c – 是否可以在模板化类之外获取指定的模板类型?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1218400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存