c++ - 如何根据类型制作具有重载函数的模板?
问题描述
我遇到了一个 numeric_limits 静态方法。例如, numeric_limits::infinity(); 当我们执行 numeric_limits::infinity() 时给出无穷大,我们得到不同的结果。
我的理解是 infinity() 是 numeric_limits 类的静态方法。如果我想实现类似的机制,我该怎么做。如何制作一个模板类,该类将根据传递的类型返回不同的答案。
解决方案
您可以为您想要支持的每种类型提供一个特化,并为每个特化成员函数赋予相同的名称以返回不同的值,甚至是不同的类型。
#include <iostream>
template <typename T>
struct my_limits;
template <>
struct my_limits<int> {
static constexpr int max() {
return 2000;
}
};
template <>
struct my_limits<char> {
static constexpr char max() {
return 127;
}
};
int main() {
std::cout << my_limits<int>::max() << ' ' << static_cast<int>(my_limits<char>::max());
}
推荐阅读
- java - 如何在 JSprit 中为灵活的时间窗口实现 SoftActivityConstraint?
- asynchronous - 在异步消息传递中,客户端-代理通信是同步的吗?
- reactjs - 如何使用 Yup Validation 确认 React 表单中的匹配值?
- line - 删除 GDocs 中的硬换行符而不是段落换行符
- blazor-server-side - 无法重定向到 Blazor 服务器中的错误页面,因为它将 200 状态代码返回到不存在的页面
- nlp - NLP 变压器网络中的注意头“能力”
- python - 蟒蛇海生。无法解释输入“工作日名称”
- javascript - JavaScript 传参事件
- android - 静音然后取消静音时 MediaPlayer 音量不一致
- android - 清单未加载以删除地址栏