首頁 >後端開發 >C++ >如何將尾隨返回類型與可變參數模板函數一起使用,以推斷出對不同類型的參數求和的函數的正確返回類型?

如何將尾隨返回類型與可變參數模板函數一起使用,以推斷出對不同類型的參數求和的函數的正確返回類型?

DDD
DDD原創
2024-11-15 02:26:02419瀏覽

How can trailing return types be used with variadic template functions to deduce the correct return type for a function that sums arguments of varying types?

將Dectype 與可變參數模板函數結合使用的尾隨回傳類型

嘗試建立對不同類型的參數求和並傳回的變分模板函數時輸入正確的總和,就會出現常見問題。

問題公式

使用 decltype 作為尾隨回傳類型的基本實作會導致超過兩個參數的未定義行為。為了避免這種情況,可以明確地聲明該函數,但這會導致多個參數的類型推導不正確。

使用自訂特徵類別的解決方案

要克服這些問題,使用名為 sum_type 的自訂特徵類別。它使用 std::add_rvalue_reference 和 std::val 遞歸計算回傳類型。

修改實作

用型別名稱 sum_type::type在尾隨返回類型中,此函數可以正確推導任意數量的結果類型參數:

改進的類型推導

此外,對sum_type 的最後一個特化的修改提供了改進的類型推導:

這確保返回類型與decltype(a (b c)) 匹配,與預期的加法一致訂購。

以上是如何將尾隨返回類型與可變參數模板函數一起使用,以推斷出對不同類型的參數求和的函數的正確返回類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn