The C++ standard allows abstract parameters in deleted functions
and in function declarations
The type of a parameter or the return type for a function definition
shall not be a (possibly cv-qualified) class type that is
incomplete or abstract within the function body
unless the function is deleted.