SFINAE, enable_if, and an outlook to Concepts
C++ has an important feature called “Substitution Failure Is Not An Error”. Meaning, if implicit template argument substitution leads to an error, the expression is simply ignored and the error never becomes visible to the user. With this it is then possible to have very fine-grained control over overload resolution.
C++20 has a much nicer syntax for this task with additional semantics, called concepts, changing the way we define generic interfaces. This talk will give a brief outlook to C++20's concepts feature.