Exploring SFINAE and Its Purpose

Explore different ways to restrict template arguments in this lesson.

Introduction to SFINAE

When we write templates, we sometimes need to restrict the template arguments. For instance, we have a function template that should work for any numeric type, therefore integral and floating-point, but should not work with anything else. Or we may have a class template that should only accept trivial types for an argument.

There are also cases when we may have overloaded function templates that should each work with some types only. For instance, one overload should work for integral types and the other for floating-point types only. There are different ways to achieve this goal, and we’ll explore them in this section and the next.

Get hands-on with 1200+ tech skills courses.