"Hilariously awful" template metaprogramming is a thing of the past. It has been years since it seemed needed, or since I read any. New, more intuitive features have displaced it.
With concepts in C++20, you get to choose whether templates are duck-typed.
With concepts in C++20, you get to choose whether templates are duck-typed.