将std::type_Identity对象转换为类型
本文介绍了将std::type_Identity对象转换为类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我们创建了两个type_of
函数,它们返回std::type_identity
,like:
从std::type_identity
获取实际类型的方法似乎有点麻烦:
有没有办法在上面的表达式中省去decltype
的需要,或者把它放在一个可重用的表达式中,以实现更好的效果,比如:
甚至更好:
注意:类型和非类型模板参数的专门化可能是一个方向,但不起作用(无法编译):
推荐答案
从std::type_identity
对象can be encapsulated into the following expresion获取类型:
这将允许替换繁琐的表达式:
使用更简单的表达式:
仍需(然后type_of
type
),因为第一步可以得到类型或变量,这只适用于函数模板重载,则函数不能返回类型,所以返回一个需要模板表达式来提取内部类型的对象。
根据您要对类型执行的操作,代码可以变得更简单。
如果您只想创建该类型的对象,则可以将该对象的创建转发到函数:
从std::type_identity
can work以这种方式创建类型的一般情况:
请注意,整个过程只适用于可用作非类型模板参数的变量。有关不使用模板(但使用宏...)并因此适用于不能作为模板参数的变量的更通用方法,请参见this mind blowing neat answer!
这篇关于将std::type_Identity对象转换为类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!