> C++11 certainly introduced very few necessary features
I have to ask whether you've actually done any significant amount of programming in C++, both C++11 and pre-C++11.
I have to ask whether you've actually done any significant amount of programming in C++, both C++11 and pre-C++11.
I'd avoid Alexandrescu-style template trickery unless you really truly need it, though. You can write good C++ that more or less resembles Java, and that's fine.
That doesn't sound like good C++. Making everything a pointer or implementing polymorphism through pointers makes the code harder to reason about, and makes tighter coupling between interfaces and implementations.