gpt4 book ai didi

c++ - 确定涉及模板类型参数的表达式的结果类型?

转载 作者:太空狗 更新时间:2023-10-29 20:13:38 25 4
gpt4 key购买 nike

使用 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;

衰减 确保您获得裸类型,剥离引用,以防操作返回引用。

关于c++ - 确定涉及模板类型参数的表达式的结果类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20167503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com