如何在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的适当参数

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...