C++11系列學習之五-------decltype

使用場景

? ? ?在C++中經常要用到很長的變量名,如果已經有變量和你將使用的變量是一個類型,即可使用decltype關鍵字

來申明一樣的類型變量。

decltype原理

? ? ?返回現有變量類型,decltype是一個關鍵字,而不是一個函數,這有啥區別呢?decltype在編譯階段返回變量類

型,而不是在運行階段傳遞不同變量返回不同值。

decltype使用范例

1、復雜已知變量類型

map<string, vector<string>> str_map;  
decltype(str_map) str_map_new;  


2、表達式返回值類型

int a, b;  
decltype(a + b) a;  

3、函數返回值

int foo(int i) {return i;
}
double foo(double d) {return d;
}template<typename T>
auto getNum(T t)->decltype(foo(t)) {return foo(t);
}
上面的getNum后面還有一大串,我們后面會驚奇地發現C++14已經去掉了這些,所有代碼看起來非常輕盈,如下:

#include<iostream>
#include<map>
#include<string>
#include<vector>
using namespace std;
int foo(int i) {return i;
}
double foo(double d) {return d;
}template<typename T>
auto getNum(T t) {return foo(t);
}
int main()
{int a =5 ;cout<<getNum(a)<<endl;cout << getNum(1.2) << endl;}


注意

1、decltype兩個括號返回變量引用類型

int i;  
decltype((i)) r = i;  
decltype(i) a;  


2、auto和decltype配合使用可以實現不同返回類型

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

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

相關文章

Linux學習 Unit 9

Unit9.openssh-server1.openssh-server功能&#xff1a;讓遠程主機可以通過網絡訪問sshd服務&#xff0c;開始一個安全shell2.客戶端連接方式ssh遠程主機用戶遠程主機ip[rootdesktop0 ~]# ssh root172.25.0.11The authenticity of host 172.25.0.11 (172.25.0.11) cant be esta…

2015年創業中遇到的技術問題:41-50

41.Bootstrap換行。col-md-10和col-md-2。這2個div按說應該在一行的&#xff0c;結果col-md-2換行了。看看樣式&#xff0c;發現有多余的“margin-left: 1px;"。42.Service實現類定義了一個“自動調度進行刷新”的方法。OverrideScheduled(cron "0 0/10 * * * ? &q…

KMP模板與講解

讀書筆記終于寫完了&#xff0c;寫一下我對KMP的理解。 KMP的思想就是盡量利用已經得到的信息&#xff0c;來降低時間復雜度&#xff0c;已經得到的信息存放在next數組里。算法確實很難理解&#xff0c;所以很難講解。。舉個例子來說吧。 設字符串是str[]&#xff0c;next[5] …

android 非root app 捕捉系統廣播_APP的生死之道

這篇文章主要介紹APP在安卓系統中是怎么被殺死的&#xff0c;按照怎樣的一個策略去釋放進程&#xff1b;同時介紹一些延長應用存活時間的方案&#xff0c;雖然這個在現在安卓系統上越來越難實現了&#xff0c;但是也是可以稍微了解下&#xff0c;主要也是通過這些hack的方案更好…

C++11系列學習之六-----for

前言C11這次的更新帶來了令很多C程序員期待已久的for range循環&#xff0c;每次看到javascript&#xff0c; lua里的for range&#xff0c;心想要是C能有多好&#xff0c;心里別提多酸了。這次C11不負眾望&#xff0c;再也不用羨慕別家人的for range了。使用場景ex1&#xff1…

ArcGIS Engine 10開發環境的一些常見問題(轉載)

轉自&#xff1a;http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid107612&extra&page1 許多版友在剛剛使用ArcGIS 10做開發的時候&#xff0c;都會遇到這樣那樣的問題。在擔任實習版主的這一個多月里&#xff0c;看到了這么幾個與開發環境相關的問題&#xff0c;重…

@value 靜態變量_面試官:為什么靜態方法不能調用非靜態方法和變量?

這個可能很多人之前學習jvm的時候都會遇到&#xff0c;屬于一個小問題&#xff0c;寫這篇文章的原因是我在看java相關的面試題目中遇到的&#xff0c;因此順手總結一下&#xff1a;一、例子我們先看效果&#xff1a;我們在靜態方法main中調用非靜態變量或者是方法都會報錯。我們…

SpringMVC連接多數據源配置

在spring-config-datasource.xml中配置&#xff1a; <ds:ibatis-config><ds:sql-map-clientid"sqlMapClient2"datasource-ref"riskBasicDataSource2"config-location"classpath:sqlmap-config.xml"/> </ds:ibatis-config> <…

Memcached 工作原理

http://hzp.iteye.com/blog/1872664Memcached處理的原子是每一個&#xff08;key&#xff0c;value&#xff09;對&#xff08;以下簡稱kv對&#xff09;&#xff0c;key會通過一個hash算法轉化成hash-key&#xff0c;便于查找、對比以及做到盡可能的散列。同時&#xff0c;mem…

C++11系列學習之七---------初始化列表

一、前言C的學習中&#xff0c;我想每個人都被變量定義和申明折磨過&#xff0c;比如我在大學筆試過的幾家公司&#xff0c;都考察了const和變量&#xff0c;類型的不同排列組合&#xff0c;讓你區別有啥不同。反正在學習C過程中已經被折磨慣了&#xff0c;今天再來看看重溫下那…

c# streamReader轉XmlDocument讀取節點

http獲得web&#xff08;url&#xff09;請求&#xff0c;先是獲得數據流streamreader&#xff0c;之后將String數據流轉換為xmldocument&#xff0c;之后xmlnode讀取節點。 // get the responseWebResponse webResponse webRequest.GetResponse();if (webResponse null){ re…

ad中電容用什么封裝_用什么來降低噪聲?只要幾個電容器就可以,簡單有效!...

使用電容器降低噪聲噪聲分很多種&#xff0c;性質也是多種多樣的。所以&#xff0c;噪聲對策(即降低噪聲的方法)也多種多樣。在這里主要談開關電源相關的噪聲&#xff0c;因此&#xff0c;請理解為DC電壓中電壓電平較低、頻率較高的噪聲。另外&#xff0c;除電容外&#xff0c;…

C#委托的介紹(delegate、Action、Func、predicate)

委托是一個類&#xff0c;它定義了方法的類型&#xff0c;使得可以將方法當作另一個方法的參數來進行傳遞。事件是一種特殊的委托。 1.委托的聲明 (1). delegate delegate我們常用到的一種聲明 Delegate至少0個參數&#xff0c;至多32個參數&#xff0c;可以無返回值&#xff0…

版本1.8.1Go安裝以及語法高亮配置

注意點&#xff1a;普通用戶和root用戶高亮要設置兩遍①下載go安裝包 https://golang.org/doc/ 最新的版本&#xff1a;go1.8.1.linux-amd64.tar.gz ②進入主目錄&#xff1a;$:su ~賦給普通用戶root權限&#xff0c;以便執行tar命令&#xff1a;$:su root 把壓縮包解壓到/usr/…

求二叉樹中節點的最大距離

struct node{ Node Left; Node Right; int MaxLeft;//左子樹到該節點的最長距離 int MaxRight;//右子樹到該節點的最長距離 char chValue; }; void FindMaxLen(Node T) { int tmpMax 0; if (NULL T) { return; } if (NULL T->Left) { T->MaxLeft 0; } if (NULL T-&g…

flutter 自定義鍵盤_入門級機械鍵盤選購對比

個人覺得鍵盤這種東西&#xff0c;手感是最重要的&#xff0c;畢竟鍵盤是要拿用的&#xff0c;不是拿來供的。不管鍵盤再怎么好看、酷炫&#xff0c;只要你用起來不舒服、不習慣&#xff0c;那對你而言&#xff0c;就不會是一把好鍵盤。那么&#xff0c;影響手感的因素主要有哪…

騰訊2016校招試題----------格雷碼的實現

問題&#xff1a;產生n位元的所有格雷碼。格雷碼(Gray Code)是一個數列集合&#xff0c;每個數使用二進位來表示&#xff0c;假設使用n位元來表示每個數字&#xff0c;任兩個數之間只有一個位元值不同。例如以下為3位元的格雷碼&#xff1a; 000 001 011 010 110 111 101 100 。…

關于A/D方面的小結

&#xff08;轉載&#xff09;AD精度與分辨率 最近做了一塊板子&#xff0c;當然考慮到元器件的選型了&#xff0c;由于指標中要求精度比較高&#xff0c;所以對于AD的選型很慎重。 很多人對于精度和分辨率的概念不清楚&#xff0c;這里我做一下總結&#xff0c;希望大家不要…

常用表的字段

F:\study\表的設計 一&#xff1a;網站設置有哪些內容&#xff1a; 1>title 表題 2>logo 3>keyword 關鍵字 4>status 是否開啟 5>Internet 備案號 6>url 網址 7>tel 聯系電話 8>brief …

四個好看的CSS樣式表格

1. 單像素邊框CSS表格 這是一個非經常常使用的表格樣式。 源碼&#xff1a; <!-- CSS goes in the document HEAD or added to your external stylesheet --> <style type"text/css"> table.gridtable { font-family: verdana,arial,sans-serif; font-si…