vs2019 c++中模板 enable_if_t 的使用

(1) 該模板的定義如下:

template <bool _Test, class _Ty = void>
struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty>
struct enable_if<true, _Ty> { // type is _Ty for _Testusing type = _Ty;
};template <bool _Test, class _Ty = void>
using enable_if_t = typename enable_if<_Test, _Ty>::type;

當第一個模板參數為 true 時 , 名稱 enable_if_t 才對應類型名 _Ty 。進而可以用 enable_if_t 來定義變量。
看源碼時,經常出現的情況是類的成員函數是模板函數,但對成員函數的模板參數的類型加以限制。
即某些條件滿足時才可以調用類的該成員函數。若類里只有一個具有此名字的成員函數,且對其調用的條件不滿足(沒有給出合適的模板參數),結果是在編譯階段,代碼就報錯了。這就是使用 enable_if_t 的好處。
舉個 STL 庫中為類的模板成員函數使用 enable_if_t 的例子:

在這里插入圖片描述

(2)寫個小練習:

在這里插入圖片描述

上例中的 A 只可以接受 char 類型的實參。若以其它類型為實參,則編譯階段就報錯了,很神奇呢:

在這里插入圖片描述

謝謝閱讀

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12529.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12529.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12529.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Golang | Leetcode Golang題解之第89題格雷編碼

題目&#xff1a; 題解&#xff1a; func grayCode(n int) []int {ans : make([]int, 1<<n)for i : range ans {ans[i] i>>1 ^ i}return ans }

MSR810-LM快速配置通過LTE模塊上網

正文共&#xff1a;1111 字 13 圖&#xff0c;預估閱讀時間&#xff1a;1 分鐘 之前買了一個無線版本的MSR810-W&#xff08;淘了一臺二手的H3C企業路由器&#xff0c;就用它來打開網絡世界的大門&#xff09;&#xff0c;并整理了一份快速配置&#xff08;腳本案例來了&#x…

三菱FX3U-4AD模擬量電壓輸入采集實例

硬件&#xff1a;&#xff30;&#xff2c;&#xff23;模塊 &#xff26;&#xff38;&#xff13;&#xff27;&#xff21;-&#xff12;&#xff14;&#xff2d;&#xff34; &#xff1b;&#xff21;&#xff0f;&#xff24;模塊&#xff26;&#xff38;&#xff13…

SQL——SERVER的建表主要操作

目錄 一&#xff1a;數據存儲問題 1.表的相關數據 2.表&#xff0c;字段&#xff0c;記錄 二&#xff1a;建表 1.創建表頭 2. 數據類型 3.保存數據 4.數據冗余 5.使用命令重置表 7.設置主鍵 一&#xff1a;數據存儲問題 1.表的相關數據 表是數據庫的基本單位&…

交互原型設計工具 Axure RP 9 for Mac 正式激活版

Axure RP 9 Pro Mac版是Mac平臺上的一款專為快速原型設計而生的應用&#xff0c;Axure RP 9 Pro Mac版可以輔助產品經理快速設計完整的產品原型&#xff0c;并結合批注&#xff0c;說明以及流程圖&#xff0c;框架圖等元素&#xff0c;將產品完整地表述給各方面設計人員&#x…

Android Studio(AS)使用別人的項目與gradle包并運行項目

一、問題描述 在進行AS開發時&#xff0c;我們可能會使用到別人的項目&#xff0c;但發現別人把項目發給我們后會發現gradle項目同步失敗o(≧口≦)o&#xff0c;此時計有三&#xff1a; 1.橫行霸道、豪取搶奪&#xff1a;直接空降到項目人那里&#xff0c;強他的電腦占為己有…

Numpy的數組操作

文章目錄 數組的創建創建全0的二維數組a(3,3)全1的二維數組b&#xff08;3,4&#xff09;隨機數二維數數組c&#xff08;2,3&#xff09;效果截圖 數組的屬性查看b數組的維度查看b數組元素的個數效果截圖 數組的維度操作將數組c的行變列&#xff0c;返回最后一個元素返回數組c第…

python 虛擬環境-最簡單的教程

查看當前 python 的安裝路徑 which python 1、Anaconda創建虛擬環境 (1)執行命令&#xff1a;conda create --name env_name python3.10&#xff0c; 命令中我制定了環境名稱是env_name&#xff0c;指定了Python版本是3.10&#xff0c;執行命令后&#xff0c;Conda會自動下…

【回溯】1240. 鋪瓷磚

本文涉及知識點 回溯 LeetCode1240. 鋪瓷磚 你是一位施工隊的工長&#xff0c;根據設計師的要求準備為一套設計風格獨特的房子進行室內裝修。 房子的客廳大小為 n x m&#xff0c;為保持極簡的風格&#xff0c;需要使用盡可能少的 正方形 瓷磚來鋪蓋地面。 假設正方形瓷磚的…

前端面試題復習 - 性能優化

圖片加載優化 很多修飾類圖片完全可以用css代替對于移動端來說&#xff0c;很多圖片都可以用CDN加載小圖使用base64格式使用雪碧圖能夠顯示WebP格式的瀏覽器盡量使用WebP格式。因為WebP格式具有更好的圖像數據壓縮算法&#xff0c;能帶來更小的圖片體積&#xff0c;而且擁有肉…

3、用Vue快雕塑搭建一個管理系統的頁面布局框架

3.2.頂部欄header 在el-header標簽里對標簽欄header進行樣式定義 <template><div id"app"><el-container><el-header style"background-color: #4c535a"><img src"/assets/logo.png" alt"" style"w…

貪心+數學

一、題目 1、題目描述 給你一個下標從 0 開始的整數數組 tasks &#xff0c;其中 tasks[i] 表示任務的難度級別。在每一輪中&#xff0c;你可以完成 2 個或者 3 個 相同難度級別 的任務。 返回完成所有任務需要的 最少 輪數&#xff0c;如果無法完成所有任務&#xff0c;返回 …

運維別卷系列 - 云原生監控平臺 之 05.prometheus alertManager 實踐

文章目錄 [toc]Alertmanager 簡介Alertmanager 實現的核心概念GroupingInhibitionSilencesClient behaviorHigh Availability Alertmanager 配置文件globaltemplatesrouteinhibit_rulesreceivers Alertmanager 部署創建 cm創建 svc創建 stsPrometheus 配置告警Prometheus 配置文…

Frida-RPC 調用

demo frida-rpc通過調用已加載到內存中的函數,直接獲取到結果: import fridardev = frida.get_remote_device() session = rdev.attach("大姨媽")scr = """rpc.exports = { encrypt(j2, str){var res;Java.perform(function () {var Crypt = Ja…

K-means 算法【python,算法,機器學習】

K-means 算法試圖將數據集中的樣本劃分為若干個子集&#xff0c;每個子集稱為一個簇&#xff0c;通過該算法使得每個聚類內的數據點盡可能相似&#xff08;即距離該聚類的中心點最近&#xff09;&#xff0c;而不同聚類之間的數據點盡可能不相似。 算法步驟如下&#xff1a; 從…

Kubernetes 的命令行工具kubectl介紹

目錄 1. 查看資源狀態2. 創建資源3. 描述資源4. 更新資源5. 刪除資源6. 暴露服務7. 狀態檢查與故障排查8. 擴縮容9. 自動補全10. 上下文管理11. 查看事件12. 資源編輯 kubectl 是 Kubernetes 的命令行工具&#xff0c;它用于與 Kubernetes 集群進行交互&#xff0c;執行各種管理…

Vu2之使用provide與inject傳遞數據案例

Vu2之使用provide與inject傳遞數據案例 在Vue 2中&#xff0c;provide 和 inject 是一對用于在組件樹中傳遞數據的高級選項。它們允許祖先組件向其所有子孫后代組件提供數據&#xff0c;而無需顯式地通過 props 或事件進行傳遞。 provide 選項是在祖先組件中聲明的&#xff0c;…

運維別卷系列 - 云原生監控平臺 之 03.prometheus label 實踐

文章目錄 [toc]label 簡介自定義標簽relabel_configsregexrelabel_action metric_relabel_configs兩者的區別 實踐 label 簡介 label 對于 Prometheus 來說&#xff0c;屬于數據處理的方式&#xff0c;Prometheus 是通過指定的 label 來查詢數據 Prometheus 的 target 中實例&…

css 步驟條虛線漸變色效果實現

效果如圖所示&#xff1a; 思路&#xff1a; 使用元素覆蓋的方式實現視覺上虛線的效果 實現代碼&#xff1a; html布局 <ul class"details-cont"><li class"details-li" v-for"item in 3" :key"item"><div class&qu…

(教程)gpt-4o如何使用,怎么體驗?gpt-4o和gpt-4-turbo的區別

今天OpenAI發布了gpt-4o&#xff0c;我體驗之后&#xff0c;gpt-4o簡直逆天了。中文能力也挺別強。速度比現在的gpt4還要快。 早在 5 月 11 日&#xff0c;Sam 就在推文中表示&#xff1a;OpenAI 并沒有推出 GPT-5&#xff0c;或搜索引擎&#xff0c;但團隊一直在努力研發一些…