C++標準模板(STL)- 類型支持 (類型修改,從給定類型移除引用,std::remove_reference)

類型特性

類型特性定義一個編譯時基于模板的結構,以查詢或修改類型的屬性。

試圖特化定義于 <type_traits> 頭文件的模板導致未定義行為,除了 std::common_type 可依照其所描述特化。

定義于<type_traits>頭文件的模板可以用不完整類型實例化,除非另外有指定,盡管通常禁止以不完整類型實例化標準庫模板。

類型修改

類型修改模板通過應用修改到模板參數,創建新類型定義。結果類型可以通過成員 typedef?type?訪問。

從給定類型移除引用

template< class T >
struct remove_reference;

(C++11 起)

若類型 T 為引用類型,則提供成員 typedef type ,其為 T 所引用的類型。否則 typeT

成員類型

名稱定義
typeT 所引用的類型,或若 T 不是引用則為 T

輔助類型

template< class T >
using remove_reference_t = typename remove_reference<T>::type;

(C++14 起)

可能的實現

template< class T > struct remove_reference      {typedef T type;};
template< class T > struct remove_reference<T&>  {typedef T type;};
template< class T > struct remove_reference<T&&> {typedef T type;};

調用示例

#include <iostream>
#include <type_traits>int main()
{std::cout << std::boolalpha;std::cout << "std::is_same<int, int>():         "<< std::is_same<int, int>() << std::endl;std::cout << "std::is_same<int, int &>():       "<< std::is_same<int, int &>() << std::endl;std::cout << "std::is_same<int, int && >():     "<< std::is_same < int, int && > () << std::endl;std::cout << "std::is_same<int, std::remove_reference<int>::type>():        "<< std::is_same<int, std::remove_reference<int>::type>() << std::endl;std::cout << "std::is_same<int, std::remove_reference<int &>::type>()>():   "<< std::is_same<int, std::remove_reference<int &>::type>() << std::endl;std::cout << "std::is_same<int, std::remove_reference < int && >::type>():  "<< std::is_same < int, std::remove_reference < int && >::type > () << std::endl;return 0;
}

輸出

std::is_same<int, int>():         true
std::is_same<int, int &>():       false
std::is_same<int, int && >():     false
std::is_same<int, std::remove_reference<int>::type>():        true
std::is_same<int, std::remove_reference<int &>::type>()>():   true
std::is_same<int, std::remove_reference < int && >::type>():  true

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

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

相關文章

Springboot整合MybatisPlus及分頁功能

1 引入pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot</artifactId><version>2.7.14</version> </dependency> <dependency><groupId>com.baomidou</groupId><a…

【Vue】Vue3 配置全局 scss 變量

variables.scss $color: #0c8ce9;vite.config.ts // 全局css變量css: {preprocessorOptions: {scss: {additionalData: import "/styles/variables.scss";,},},},.vue 文件使用

讀書筆記:彼得·德魯克《認識管理》第33章 管理者與管理科學

一、章節內容概述 把管理科學的潛力轉變為績效&#xff0c;主要取決于管理者。要做到這一點&#xff0c;管理者必須理解管理科學是什么以及能夠做什么。管理者必須明白&#xff0c;管理科學固有的特殊局限性在很大程度上源于自身的起源和歷史。但最重要的是&#xff0c;管理者…

Java大型電商項目——品優購(一)

視頻教程&#xff1a;【黑馬程序員】Java大型電商項目—品優購【配套源碼筆記】_嗶哩嗶哩_bilibili源碼下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1fECz5In_XCB-aW6ed6ZTbA 提取碼&#xff1a;27xa 技術選型&#xff1a; 后端框架&#xff1a;SpringSprin…

多功能回饋式交流電子負載的應用

多功能回饋式交流電子負載是用于模擬和測試電源、電池等電子設備的負載工具。它具有多種應用&#xff0c;可以用于測試和評估各種類型的電源&#xff0c;包括直流電源和交流電源。它可以模擬各種負載條件&#xff0c;如恒定電流、恒定電壓和恒定功率&#xff0c;以驗證電源的性…

小葉子鋼琴智能陪練 助力打牢鋼琴基礎

孩子在練琴過程中&#xff0c;經常會出現錯音錯節奏&#xff0c;為了能夠幫助她更高效的練琴&#xff0c;最近開始使用智能鋼琴陪練工具——小葉子鋼琴智能陪練。 身邊也有很多朋友在用這款應用&#xff0c;它比較知名的功能就是三大練琴模式&#xff0c;也就是識譜模式、提升…

linux centos系統命令安裝

Zip unzip 命令安裝下載 centos 命令常用常用下載 https://rpmfind.net/linux/rpm2html/search.php?queryzip%28x86-64%29&submitSearch…&system&arch 在線安裝zip命令 Centos用yum安裝的話用下面的命令安裝 yum install -y unzip zipUbuntu的的系統可以用下…

java SpringCloud版本b2b2c鴻鵠云商平臺全套解決方案 小程序商城免費搭建

使用技術&#xff1a; Spring CloudSpring BootMybatis微服務服務監控可視化運營 B2B2C平臺&#xff1a; 平臺管理端(包含自營) 商家平臺端(多商戶入駐) PC買家端、手機wap/公眾號買家端 微服務&#xff08;30個通用微服務如&#xff1a;商品、訂單、購物車、個人中心、支…

Ubuntu20.04清理垃圾vscode緩存

使用VM虛擬機安裝了Ubuntu系統&#xff0c;主目錄空間越來越小&#xff0c;硬盤擴容之后很快又空間不足&#xff0c;甚至出現了開機卡黑屏的情況&#xff0c;這里記錄一下解決過程。 1 重新開機進入系統 狀態&#xff1a;卡到了開機黑屏狀態&#xff0c;左上角有一條小橫杠 原…

國外網站文章或網頁采集翻譯為中文

采集國外網站的文章或網頁數據&#xff08;例如英文&#xff0c;西班牙語&#xff0c;法語等&#xff09;&#xff0c;怎么快速批量翻譯為中文&#xff1f; 可以使用簡數采集器來實現&#xff0c;支持自動翻譯&#xff0c;同時翻譯為多種語言&#xff08;不僅中文&#xff09;…

Angular11 MSAL B2C登錄實例 (二)

前言 上文介紹了在app.module.ts里的配置&#xff0c;本文著重講解下在app-routing.module.ts和index.html里的設置。 步驟 在文件中主要需要添加以下代碼 app-routing.module.ts const initialNavigation (!BrowserUtils.isInIframe() && !BrowserUtils.isInPopup…

Linux實驗三:shell程序設計: shell基礎

實驗目的: 進一步鞏固shell程序設計語言基本語法&#xff0c;加深對所學知識理解。 實驗要求 1. 四種變量的使用 2. 配置環境變量 3. 元字符和正則表達式 4. 引號 1. 本地變量 $ var1"hello Linux" //定義本地變量var1 $ read var2 //定義本地變量vae…

Linux常用命令——blkid命令

在線Linux命令查詢工具 blkid 查看塊設備的文件系統類型、LABEL、UUID等信息 補充說明 在Linux下可以使用blkid命令對查詢設備上所采用文件系統類型進行查詢。blkid主要用來對系統的塊設備&#xff08;包括交換分區&#xff09;所使用的文件系統類型、LABEL、UUID等信息進行…

【linux】服務器CPU占用50%,top/htop/ps卻看不到異常進程?使用unhide可以查看!

問題描述 htop發現前32個核全被占滿了&#xff0c;但是卻找不到對應進程號 查殺 安裝unhide查看隱藏進程 apt-get install unhideunhide使用 unhide proc果然發現了隱藏進程 殺死隱藏進程 kill -9 [pid]這么多pid號&#xff0c;我這邊殺了其中一個&#xff0c;發現CPU…

華為 HUAWEI 網絡設備路由交換 基線安全加固操作

目錄 帳號管理 ELK-Huawei-01-01-01 登錄要求 ELK-Huawei-01-02-01 認證和授權 ELK-Huawei-01-03-01 日志配置 ELK-Huawei-02-01-01 通信協議 ELK-Huawei-03-01-01 設備其它安全要求 ELK-Huawei-04-01-01 帳號管理 ELK-Huawei-01-01-01 編號&#xff1a; ELK-Huawei-01-0…

本地websocket服務端暴露至公網訪問【cpolar內網穿透】

本地websocket服務端暴露至公網訪問【cpolar內網穿透】 文章目錄 本地websocket服務端暴露至公網訪問【cpolar內網穿透】1. Java 服務端demo環境2. 在pom文件引入第三包封裝的netty框架maven坐標3. 創建服務端,以接口模式調用,方便外部調用4. 啟動服務,出現以下信息表示啟動成功…

C++設計模式之工廠模式(中)——工廠模式

工廠模式 工廠模式介紹示例示例使用運行結果工廠模式與簡單工廠模式區別 工廠模式 工廠模式在簡單工廠模式的基礎之上進行了改進。當需要生產的產品種類增加&#xff0c;可以通過新增子類工廠來生產&#xff0c;沒有破壞程序設計原則中的開放封閉原則。 介紹 工廠模式先抽象…

1.2.1 C語言結構體初始化方法總結

文章目錄 結構體定義通用定義注冊事項結構體初始化方法一簡述示例方法二簡述示例方法三簡述示例方法四簡述示例方法五簡述示例結構體定義 通用定義 常用的結構體定義,有2種形式, 一種是關鍵字struct 結構體形式,如下

域控操作五:統一熄屏睡眠時間

直接看圖路徑&#xff0c;我只設置了熄屏&#xff0c;如果要睡眠就下面那個啟用設置時間

Pytorch中的Tensorboard常用API

SummaryWriter函數 這個函數用于創建一個tensorboard文件&#xff0c;其中常用參數有 log_dir&#xff1a;tensorboard文件的存放路徑。不設置log_dir默認會在當前程序所在的文件夾下創建個runs文件夾存儲flush_secs&#xff1a;表示寫入tensorboard文件的時間間隔comment&…