【问题标题】:Min/max values of a templated type模板化类型的最小值/最大值
【发布时间】:2020-10-12 18:13:08
【问题描述】:

我有一个相当基本的问题。假设我有一个模板函数:

bool is_max(std::uint32_t val) {
  return (val == std::numeric_limits<uint32_t>::max());
}

但是,为了使我的功能灵活,我想使用模板:

template <typename T>
bool is_max(T val) {
  return (val == ???);
}

std::numeric_limits 函数适用于内置类型,但显然不适用于用户定义类型。

是否有一些标准运算符或函数可以在此处用于查找最小值/最大值?

【问题讨论】:

  • 您可以为自己的类型创建std::numeric_limits 的特化

标签: c++ templates


【解决方案1】:

处理这个问题的方法是继续使用std::numeric_limits,并为所有需要的输入类型添加模板特化。

引用cppreference:

实现可以为特定于实现的类型提供std::numeric_limits 的特化:例如GCC 提供std::numeric_limits&lt;__int128&gt;。非标准库可以为库提供的类型添加特化,例如OpenEXR 为 16 位浮点类型提供 std::numeric_limits&lt;half&gt;

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多