Léxico TI › Programación › SFINAE

SFINAE

Programación Svenska → Actualizado: 2026-09-02

La regla de C++ según la cual una plantilla que se vuelve inválida al sustituir los tipos se descarta silenciosamente del conjunto de candidatos en vez de detener la compilación.

La regla existía originalmente para que la resolución de sobrecarga funcionara con sentido, pero pronto se descubrió que servía como herramienta de interrogación: escribes una plantilla que solo puede instanciarse si un tipo tiene cierta propiedad, y dejas que el compilador elija la única sobrecarga que sobrevive. De ahí nació std::enable_if, toda la biblioteca de type traits, y una generación de código que decidía en tiempo de compilación si un tipo tenía el método begin(). Funcionaba, pero el idioma era indirecto, y un solo error producía pantallas de errores sobre por qué ningún candidato encajaba. C++20 sustituyó en la práctica toda la técnica por concepts y requires, que dicen lo mismo sin rodeos.

← Volver al léxico