c – 确定涉及模板类型参数的表达式结果类型?
发布时间:2020-12-16 09:49:03 所属栏目:百科 来源:网络整理
导读:使用c 11: 我想声明一个类型,它是减去两个模板参数类型值的结果. 如何在我的模板中对此进行编码? 例: templatetypename Tclass C { typedef T member_t; typedef TYPE_OF_RESULT_OF( T - T ) member_diff_t;}; 上面的“TYPE_OF_RESULT_OF(T-T)”的替代是
使用c 11:
我想声明一个类型,它是减去两个模板参数类型值的结果. 如何在我的模板中对此进行编码? 例: template<typename T> class C { typedef T member_t; typedef TYPE_OF_RESULT_OF( T - T ) member_diff_t; }; 上面的“TYPE_OF_RESULT_OF(T-T)”的替代是什么? 我期望从任何算术类型计算带符号的差异.所以我想我可以使用as_signed(T).但是,如果有意义的话,问问编译器似乎更正确. 解决方法
一个简单的解决方案是:
#include <type_traits> using member_diff_t = typename std::decay< decltype(std::declval<T>() - std::declval<T>())>::type; 衰减确保您获得裸体类型,并且引用被剥离,以防操作返回引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用Xcode 5和Matlab R2013b在OS X 10.9中编译mexopencv
- oracle – 在PL / SQL中并行化调用
- 正则表达式中[\b],\b,\B的用法:
- swift – 是否有一个zip函数来创建超过2个元素的元组?
- XML DOM学习笔记(JS)
- C#System.Security.Cryptography – 为什么要指定键和IV两次
- c# – 在.NET 2.0中序列化私有后备数据成员?
- FlashPlayer9和AVM2的弹性跑道模型
- org.xml.sax.SAXParseException: The content of element t
- oracle中delete drop truncate的用法和区别