On 15.03.24 21:21, Jaroslaw Kobus via Development wrote:
[...]
> Just found some reasoning, though not sure how much valid it is:
> https://www.learncpp.com/cpp-tutorial/hiding-inherited-functionality/
> 
> Probably there are more resources about this topic in the internet.

That page doesn't look very trustworthy.

The first example is valid. One can make something public that was 
protected in a base class, because it doesn't violate Liskov's 
Substitution Principle: One can still do everything one can do with the 
base class with the derived class, too. One can just do more with the 
derived class, which is pretty common (one can get text() from a 
QLineEdit, but not from a QWidget (well, except via its Q_PROPERTY)).

The member variable thing sounds very wrong. I'd be surprised if it 
compiled. If it does, it's probably something new in C++23 or 26 whereby 
you can use `using` for more general renaming, like

    struct insert_result {
       iterator it;
       bool inserted;
       using first = it; // was std::pair before, keep .first working
       using second = inserted;
    };

I saw a proposal for that floating around some time ago, but don't know 
the status of it.

In general, just because C++ lets one do something doesn't mean it's a 
good idea. Apart from the C ballast, C++ itself is a language with a 
huge design-space, and four decades of cruft. Only very few planes in 
that design space make sense in general, they change with each C++ 
version, and even fewer of them make sense in any given project context.

There's a reason why CppCoreGuidelines are so huge and why TTLOFIR is 
growing so rapidly: C++ projects need hundreds or thousands of rules to 
tailor C++'s vast design space to something that's acceptable for the 
project. Do the work, or die from technical debt. The core of Qt 
(qt.git) is pretty consistent, still, but we have dozens of modules, and 
hundreds of contributors now of extremely varying experience, and C++ 
has evolved a lot since C++98, so I think we need to codify a lot more 
stuff than we have done in the past (and, where possible, have tools 
check it). Look at all the google-specific checks in clang-tidy for example.

Thanks,
Marc

-- 
Marc Mutz <marc.m...@qt.io>
Principal Software Engineer

The Qt Company
Erich-Thilo-Str. 10 12489
Berlin, Germany
www.qt.io

Geschäftsführer: Mika Pälsi, Juha Varelius, Jouni Lintunen
Sitz der Gesellschaft: Berlin,
Registergericht: Amtsgericht Charlottenburg,
HRB 144331 B

-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to