模板引數 自變數推導

2021-07-25 18:54:22 字數 1175 閱讀 3919

一、基本概念

function templates 有兩種引數: 

1. template parameters(模板引數),在function template 名稱前的一對角(尖)括號中宣告: 

template // t  是個  template parameter 

2. call parameters(呼叫引數),在  function template 名稱後的小(圓)括號中宣告: 

... max (t const& a, t const& b); // a  和  b  是呼叫引數 

二、

自變數推導例子

1、一般推導方式

template

inline t1 max (t1 const& a, t2 const& b)  

... 

max(4, 4.2); // ok。返回型別和第一自變數型別相同

2、帶有函式返回值的推導方式(1)

當template parameters和call parameters之間沒有明顯聯絡,而且編譯器無法推導出template arameters  時,你必須明確地在呼叫時指定template arguments。例如你可以為max()引入第三個 template argument type 作為返回型別:

template

inline rt max (t1 const& a, t2 const& b); 

... 

max(4, 4.2); 

//  ok,但是相當冗長(譯註:因為其實只需明寫第三自變數型別,卻連前兩個自變數型別都得寫出來)

3、帶有函式返回值得推導方式(2)

另有一種作法是只明確寫出第一自變數,剩下的留給編譯器去推導,你要做的只

是把所有無法被自動推導出來的自變數型別寫出來。

template

inline rt max (t1 const& a, t2 const& b); 

... 

max(4,4.2); // ok,返回型別為  double 

此例之中,我們呼叫  max()時,只明確指出返回型別rt  為double,至於t1  和t2  兩個引數型別會被編譯器根據呼叫時的自變數推導為int  和  double。 

php中自變數 PHP 變數

php 變數作用域 變數的作用域是指令碼中變數可被引用和使用的部分,php 中有四種不同的變數作用域 序號作用域 描述local 區域性作用域 global 全域性作用域 static 靜態作用域 parameter 函式引數作用域 1 local 本地的 區域性變數的作用域 在 php 函式內部宣...

自變數選擇(R語言)

設ra2 r ra 2 為調整的復決定係數,n nn為樣本量,p pp為自變數的個數,則 r a2 1 n 1n p 1 1 r2 r 1 frac 1 r ra2 1 n p 1n 1 1 r2 在乙個實際問題的回歸建模中,自由度調整復決定係數ra2 r ra 2 越大,所對應的回歸方程越好。從擬...

模板 引數推導與特例化

對於函式模板,編譯器利用呼叫中的函式實參來確定其模板引數。從函式實參來確定模板實參的過程被稱為模板實參推斷 template argument deduction 在模板實參推斷過程中,編譯器使用函式呼叫中的實參型別來尋找模板實參,用這些模板實參生成的函式版本與給定的函式呼叫最為匹配。與非模板函式一...