auto 與decltype 兩種型別推斷

2021-08-04 19:34:50 字數 795 閱讀 2089

auto型別計算後推斷,decltype不進行計算;

auto會忽略掉頂層const,保留下層const;decltype全部進行保留;

與auto不同,decltype結果型別與表示式形式密切相關;加上括號與不加括號不同。

#include 

#include

using

namespace

std;

int main()

推斷的精髓在右值,根據右值的形式,簡單的簡單推斷和復合推斷。

引用指向指標的時候,要注意隱藏的const 輸定,需要用const auto進行宣告

例如下面**

int i=100;

cosnt auto ci=23;//right

auto ci=23;//wrong

auto &test_i=i;//正確,test_i 是int 型,因為i是int型

const

auto &p=&i;//right,變數定義後,馬上為其分配儲存,變數名i與位址&i進行了束定,綁死在一起,是一種隱含的const關係。

auto &q=&i;//wrong,

auto &x=p;//right

完整測試**

#include 

#include

using

namespace

std;

int main()

auto與 decltype 的區別

第一,auto型別說明符讓編譯器通過初始值推斷其型別,而decltype雖然也讓編譯器分析表示式,但並不實際計算表示式的值。第二,編譯器推斷出來的auto型別有時候與初始值型別不太一樣,編譯器會適當改變結果型別使其更符合規則。比如,auto會忽略頂層const。而decltype會保留頂層const...

語言基礎(10) auto與decltype

一般來說,在把乙個表示式或者函式的返回值賦給乙個物件的時候,我們必須要知道這個表示式的返回型別,但是有的時候我們很難或者無法知道這個表示式或者函式的返回型別.特別在模板中 這個時候,我們就可以使用auto關鍵字來讓編譯器幫助我們分析表示式或者函式所屬的型別.比如 1 auto item val1 v...

C 11 auto與decltype關鍵字

在我們程式設計時候常常需要把表示式的值賦給變數,需要在宣告變數的時候清楚的知道變數是什麼型別。然而做到這一點並非那麼容易 特別是模板中 有時候根本做不到。為了解決這個問題,c 11新標準就引入了auto型別說明符,用它就能讓編譯器替我們去分析表示式所屬的型別。和原來那些只對應某種特定的型別說明符 例...