std::enable_if
is another feature taken from the Boost C++ library that now ships with every C++11 compliant compiler.
As its name says, the template struct enable_if
, enables a function only if a condition (passed as a type trait) is true; otherwise, the function is undefined. In this way, you can declare several “overloads” of a method and enable or disable them depending on some requirements you need. The nice part of this is that the disabled functions will not be part of your binary code because the compiler simply will ignore them.