如何在C ++中声明Magnitude类型?

问题描述

我有一个模板类,该类必须与复杂和实数的常规类型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的适当参数