首页 > 解决方案 > 如何在 C++ 中声明 Magnitude 类型?

问题描述

假设我有一个模板类,它必须与通用类型 T complex 和 real 一起工作,但我还需要一个可以存储 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));
}

标签: c++templatestypestypetraits

解决方案


如果您需要通过表达式的结果来定义,那么它将类似于

using real_type = decltype (std::abs(std::declval<T>()));

declval将提供 T 类型的适当参数来运行


推荐阅读