xxxxxxxxxx
A function prototype is a function declaration that specifies the number and types of parameters.
T foo(); // non-prototype declaration
T foo(int, char *); // prototype declaration
T foo(int a, char *b); // prototype declaration
xxxxxxxxxx
template <typename Derived>
typename std::enable_if<std::is_base_of<Base, Derived>::value, TypeReturn>::type
someFoo(){
TypeReturn toReturnVar;
return toReturnVar;
};