c – 模板定义中的条件
发布时间:2020-12-16 10:06:41 所属栏目:百科 来源:网络整理
导读:我想根据给定类型的属性更改模板函数的返回类型.是否有可能做这样的事情,也许有部分专业化(一个用于酷T,一个用于非酷)? templatetypename T,typename ret = T::IsCool ? int : floatinline ret get() {} (总是保证,T具有bool属性IsCool.) 解决方法 您可以使
我想根据给定类型的属性更改模板函数的返回类型.是否有可能做这样的事情,也许有部分专业化(一个用于酷T,一个用于非酷)?
template<typename T,typename ret = T::IsCool ? int : float> inline ret get() {} (总是保证,T具有bool属性IsCool.) 解决方法
您可以使用std :: conditional来实现此目的.
见http://en.cppreference.com/w/cpp/types/conditional 您可以像这样使用它: C 11 template<typename T,typename ret = std::conditional<T::IsCool,int,float>::type> inline ret get() {} C 14 template<typename T,typename ret = std::conditional_t<T::IsCool,float>> inline ret get() {} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |