我有一个相当基本的问题。假设我有一个模板化函数:
bool is_max(std::uint32_t val) {
return (val == std::numeric_limits<uint32_t>::max());
}
Run Code Online (Sandbox Code Playgroud)
但是,为了使我的功能灵活,我想使用模板:
template <typename T>
bool is_max(T val) {
return (val == ???);
}
Run Code Online (Sandbox Code Playgroud)
std::numeric_limits 函数适用于内置类型,但显然不适用于用户定义类型。
是否有一些当前内置和大多数数字类型(我正在尝试使用cnl::fixed_point)的标准运算符或函数可用于此处查找最小值/最大值?
处理此问题的方法是继续使用std::numeric_limits,并为所有所需的输入类型添加模板专业化。
引用cppreference:
实现可以
std::numeric_limits为特定于实现的类型提供专门化:例如GCC提供std::numeric_limits<__int128>。非标准库可能会为库提供的类型添加专门化,例如 OpenEXR 提供std::numeric_limits<half>16 位浮点类型。
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |