A fundamental TMP technique is class template specialization.
Class templates’ flexibility can only be achieved via specialization but function templates’ flexibility can be achieved via overload ! Overload is much simpler than specialization.
In [[c++coding standard]], Alexandrescu/Sutter said “Don’t specialize func templates”, for multiple reasons.
After remembering this sound byte, it’s probably important to remember one of the reasons, for IV (halo) and zbs.