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