Описание тега enable-if

`std::enable_if` is a C++ metafunction template with parameters `bool B`, `class T = void`, defined in the Standard C++ header `type_traits`. If `B` is true then the instantiating class defines a public member type `type` equal to `T`; otherwise it does not.

std::enable_if is used to conditionally remove functions and classes from overload resolution based on type traits or to provide separate function overloads and specializations for different type traits. std::enable_if can be used as an additional function argument (excluding operator overloads), as a return type (excluding constructors and destructors), or as a class templateor function template parameter.

Reference documentation is provided here