Enabling SFINAE with the enable_if Type Trait
Learn to use the enable_if type trait to achieve SFINAE in C++ metaprogramming.
We'll cover the following
The C++ standard library is a family of sublibraries. One of these is the type support library. This library defines types such as std::size_t
, std::nullptr_t
, and std::byte
, runtime type identification support with classes such as std::type_info
, as well as a collection of type traits. There are two categories of type traits:
Type traits that enable us to query properties of types at compile-time.
Type traits that enable us to perform type transformations at compile-time (such as adding or removing the
const
qualifier, or adding or removing a pointer or reference from a type). These type traits are also called metafunctions.
SFINAE in function overloads
One type trait from the second category is std::enable_if
. This is used to enable SFINAE and remove candidates from a function’s overload set. A possible implementation is the following:
Get hands-on with 1400+ tech skills courses.