加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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;

衰减确保您获得裸体类型,并且引用被剥离,以防操作返回引用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读