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