替換失敗並非錯誤

替換失敗並非錯誤 ( Substitution failure is not an error, SFINAE ) 是指C + + 語言在模板參數匹配失敗時不認爲這是一個編譯錯誤 。 最先引入SFINAE縮寫描述相關編程技術 。 具體說 ， 當創建一個重載函數的候選集時 ， 某些 （ 或全部 ） 候選函數是用模板實參替換 （ 可能的推導 ） 模板形參的模板實例化結果 。 如果某個模板的實參替換時失敗 ， 編譯器將在候選集中刪除該模板 ， 而不是當作一個編譯錯誤從而中斷編譯過程 ， 這需要C + + 語言標準授予如此處理的許可 。 如果一個或多個候選保留下來 ， 那麼函數重載的解析就是成功的 ， 函數調用也是良好的 。