Kwave fails to compile with clang 9.0, with this kind of error message:
In file included from /wrkdirs/usr/ports/audio/kwave/work/kwave-19.08.1/libkwave/undo/UndoDeleteAction.cpp:24:
/wrkdirs/usr/ports/audio/kwave/work/kwave-19.08.1/libkwave/MultiTrackReader.h:61:24: error: 'QList' is a private member of 'QList<Kwave::SampleReader *>'
const QList<unsigned int> &track_list, ^
/wrkdirs/usr/ports/audio/kwave/work/kwave-19.08.1/libkwave/MultiTrackSource.h:41:36: note: constrained by private inheritance here
private QList<SOURCE *> ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/qt5/QtCore/qlist.h:127:7: note: member is declared here
class QList
^
1 error generated.
This can be demonstrated much more shortly with this code:
class foo {};
class bar : private foo {};
class baz : public bar
{
public: foo m_foo;
};
Within baz, foo is looked up in bar, and then (because it's *private*
inheritance) afterwards access-control kicks in and disallows its use.
By fully-qualifying foo (or, in Kwave's case, QList) the name-lookup
happens differently, and the public (global) name is found.
There is also a description of the problem on StackOverflow,
https://stackoverflow.com/questions/41595208/accessing-the-name-of-a-private-inherited-class-from-a-subclass