问题描述
说我有一个模板类,该类必须与复杂和实数的常规类型T一起使用,但是我还需要一个可以存储abs(T)的实类型。如何获取适当的类型并进行类型定义?
我尝试了以下操作:
template < typename T>
class sth{
typedef std::invoke_result<*std::abs,Value>::type real_type;
real_type sth_else(T x)
return std::abs(f(x));
}
解决方法
如果您需要通过表达式的结果进行定义,那么它将类似于
using real_type = decltype (std::abs(std::declval<T>()));
declval
将为函数提供类型T的适当参数