Remove old code declaring unimplemented copy constructors/operators
Years ago, privately declaring but not implementing these two functions was the
accepted way to suppress copying in a class. However, QObject
is already
noncopyable, making its subclasses noncopyable anyway. Therefore this code is
unnecessary, as can be verified on any of these classes T
with:
static_assert(!std::is_copy_constructible_v<T>);
static_assert(!std::is_copy_assignable_v<T>);
(Some have argued in the past that explicitly suppressing these, while unnecessary,
produced more helpful error messages, when callers try to copy a noncopyable
QObject
subclass: https://stackoverflow.com/questions/19854371/repeating-q-disable-copy-in-qobject-derived-classes.
However, modern compilers produce quite clear error message when trying to
copy an object that inherits from a noncopyable object like QObject
.)
Alternatives: Instead of deleting these, they could be updated to use = delete
or Q_DISABLE_COPY
.
Really only those in pqWidgetEventTranslator.h
caused link errors for me, because they
were declared protected
rather than private
. But as these unimplemented declarations
are all unnecessary, deleting them entirely seems the best solution.