This is just like training your dog to walk on its hind legs balancing a ball on its nose; it is an achievement, of sorts, but tells you nothing about dogkeeping. Nobody actually coding C++ does this, and a working programmer has no reason to pay it any attention beyond its novelty value. Anyway, Clang 8 and up do not allow it.
You can do overwhelmingly harder-to-understand-or-justify things in Haskell, and most are about as important. But some of those are essential.
We should be using languages actually designed for these uses, not trying to force those languages features back into c++.