尾隨返回類型使用decltype 和可變參數模板函數
此查詢旨在建構一個基本加法器,用於計算任意數量的總和具有適當傳回類型的參數。然而,目前的實現存在多個參數的限制。本文調查了根本問題並探討了潛在的解決方法。
初始實作利用尾隨回傳型別語法來簡化求和函數。但是,對於超過兩個的參數,會出現編譯錯誤,表示函數未定義。此異常源於以下事實:可變參數函數模板是在指定其返回類型之後聲明的。因此,decltype() 表達式無法引用可變參數函數模板本身。
雖然 C 0x 允許在 ->decltype(expr) 部分中進行遞歸調用,但它可能不支援像這樣的特定場景。為了解決這個問題,引入了自訂特徵類別 sum_type 作為解決方法。它可以用型別名稱 sum_type
但是,初始實現返回decltype((a b) c) 而不是預期的decltype(a (b c)).為了糾正這個問題,可以修改sum_type 專門化以確保所需的操作順序,從而得到最終的解決方案。
以上是如何使用可變參數模板函數求和來實現尾隨返回類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!