SAPRK is, as far as I’m concerned, a bit of a gray case. Hence why I don’t mention it.
As far as C++17 goes, I would call it an old language since it bares the burden of backwards compatibility.
If a modern subset of C++17 were to be released, which broke attempts at 100% bc with C and C++03 (and bellow), I might call it “modern”.
For example, modern C++ may have a “better” way to initialize variable for example, but that doesn’t make the fact that there are 6+ ways to initialize a variable any less bad.
C++ is old not in the same way Fortran is old, it’s at the cutting edge of many things as far as the current year is concerned (see Metaclasses and nano coroutines, for example), but it is old in the sense that it bares the scars of previous iterations, which make it bloated and hard to use “properly”.
It’s also old in the sense that it lacks modern tooling for things like package management and library distribution.