IT-lexikon › Programmering › SFINAE

SFINAE Substitution Failure Is Not An Error

Programmering In English → Uppdaterad: 2026-07-29

C++-regeln att en mall som blir ogiltig när typerna sätts in tyst plockas bort ur listan av kandidater istället för att stoppa kompileringen.

Regeln fanns ursprungligen för att överlagring skulle fungera vettigt, men upptäcktes snart kunna användas som ett frågeverktyg: skriv en mall som bara går att instansiera om typen har en viss egenskap, och låt kompilatorn välja den enda överlagring som överlever. Ur det växte std::enable_if, hela biblioteket av typegenskaper och en generation kod som avgjorde vid kompileringstid om en typ hade metoden begin(). Det fungerade, men uttryckssättet var indirekt och ett misstag gav flera skärmar felmeddelanden om varför ingen kandidat matchade. C++20 ersatte i praktiken hela tekniken med concepts och requires, som säger samma sak rakt ut.

← Tillbaka till lexikonet