Defined in File TemplateUtils.hpp
The macro makes the use of std::enable_if much easier by removing all the boilerplate.
The ‘what’ argument must be a valid identifier that describes, what is required. Example: you want to require that T is an integer, than what should be something like T_is_integer
The second argument must be a constant boolean expression. In order to allow templates that would otherwise confuse the preprocessor, this is passed as variadic argument (this is however an implementation detail and you should never actually pass more than one argument.