Actually quite a few of modern C++ best practices, were already possible with classical 90's C++.
Namely RAII, type safe strings, vectors, collections, less implicit conversions, reference parameters.
For me, Turbo Vision, Object Windows Library and Visual Components Library were good examples of C++ frameworks making good use of such features.
MFC always was seemed too thin in high level features.
The problem with C++, is that its copy-paste compatibility with C, crucial to win the adoption from C compiler developers, nowadays has become its Achilles heel regarding safety.
Namely RAII, type safe strings, vectors, collections, less implicit conversions, reference parameters.
For me, Turbo Vision, Object Windows Library and Visual Components Library were good examples of C++ frameworks making good use of such features.
MFC always was seemed too thin in high level features.
The problem with C++, is that its copy-paste compatibility with C, crucial to win the adoption from C compiler developers, nowadays has become its Achilles heel regarding safety.