Created macro to delete method

On compilers that support the `= delete` syntax it is used. On msvc,
the method is privated and it's implementation is just a call to abort.