news 2026/8/28 6:04:06

深入理解C++ std::enable_if_t的用法<一>做为函数返回值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解C++ std::enable_if_t的用法<一>做为函数返回值

std::enable_if_tC++14引入的别名模板,定义在<type_traits>中:

template<bool B, typename T = void> using enable_if_t = typename std::enable_if<B, T>::type;

它的作用就是:如果Btrue,则enable_if_t<B, T>等价于T(默认void);如果Bfalse,则它不是一个有效的类型。利用“替换失败不是错误”(SFINAE)原则,我们可以用它来有条件地启用或禁用模板的重载或特化。

常见用法

  1. 作为函数返回值类型(最推荐,清晰直观)

  2. 作为模板默认参数typename = std::enable_if_t<...>

  3. 作为函数参数(不太常用)

下面举个例子说明做为函数返回值类型的用法

#include <iostream> #include <type_traits> // 版本1:仅当 T 是整数类型时启用 (返回类型为 T) template <typename T> std::enable_if_t<std::is_integral_v<T>, T> // 条件为 true 时,返回类型是 T get_value(T val) { std::cout << "Integral version, value = "; return val; } // 版本2:仅当 T 不是整数类型时启用 (返回类型为 T) template <typename T> std::enable_if_t<!std::is_integral_v<T>, T> // 条件为 true 时,返回类型是 T get_value(T val) { std::cout << "Non-integral version, value = "; return val; } int main() { // 整数类型 -> 调用版本1 int x = 42; std::cout << get_value(x) << std::endl; // 输出: Integral version, value = 42 // 浮点类型 -> 调用版本2 double pi = 3.14; std::cout << get_value(pi) << std::endl; // 输出: Non-integral version, value = 3.14 // 指针类型 (非整数) -> 调用版本2 const char* str = "hello"; std::cout << get_value(str) << std::endl; // 输出: Non-integral version, value = hello return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 6:03:44

基于CNN的睡眠质量分析系统:从时间序列处理到健康应用实践

简介&#xff1a;卷积神经网络&#xff08;CNN&#xff09;作为一种强大的深度学习模型&#xff0c;其核心原理在于通过卷积核自动提取输入数据的局部特征&#xff0c;这一特性使其在图像识别领域取得了巨大成功。近年来&#xff0c;随着可穿戴设备的普及&#xff0c;CNN在处理…

作者头像 李华
网站建设 2026/8/28 6:03:21

同样是写文档,为什么别人图文清爽?

本周为大家带来《信息美学家》的第016期 今日分享主题&#xff1a;如何在飞书文档等一众文档工具中&#xff0c;用好图片组件&#xff1f; 01 背景 ◎ 为什么需要图片组件&#xff1f; 在制作文档时&#xff0c;我们常常需要插入图片来辅助说明&#xff0c;但许多人只是简单地将…

作者头像 李华
网站建设 2026/8/28 6:00:46

OpenRouter深度解析:一个API Key统一调用多模型的工程实践

最近看到一组数据&#xff1a;OpenRouter 的周 token 处理量在过去两年里增长了大约 9000 倍。放在两年前&#xff0c;这可能只是一个小众开发者的聚合 API 服务&#xff0c;而现在它已经成为很多 AI 应用、开源项目和个人工具背后的默认路由层。这次我们就把 OpenRouter 拆开来…

作者头像 李华
网站建设 2026/8/28 5:59:59

本地大模型部署显存估算:用计算器搞定GPU选型与KV Cache优化

把大语言模型部署到本地时&#xff0c;最先被问到的问题往往不是模型结构&#xff0c;而是“我的电脑能不能跑、需要多大显卡、多少显存”。很多人按参数量推断&#xff0c;觉得 7B 模型只需要 14GB 磁盘就够&#xff0c;结果加载后立刻报CUDA out of memory。这个差距来自一个…

作者头像 李华
网站建设 2026/8/28 5:57:21

降ai率指令怎么写?AI降重后怎样做AIGC检测和论文查重?

降ai率指令怎么写&#xff1f;AI降重后怎样做AIGC检测和论文查重&#xff1f; 把论文丢给大模型&#xff0c;只说“帮我降AI率”&#xff0c;常见结果是整段被重写&#xff0c;数据、引用和结论一起变化&#xff1b;再拿去检测&#xff0c;AI率未必下降&#xff0c;重复率还可…

作者头像 李华
网站建设 2026/8/28 5:54:55

GPT-Image 2 科研绘图的8个专业Prompt,轻松做出顶刊级配图!

各位同仁好,我是七哥。一个在高校里从事人工智能 相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude 等大模型 学术实操相关问题,多多交流,相互成就,共同进步。 科研绘图与普通 AI 绘图最大的区别,在于它追求的并不只是视觉好看…

作者头像 李华