История изменений
Исправление seiken, (текущая версия) :
вот этот вариант на C++20 вполне читаем, а то, что выше - на такой код сразу хочется позвонить боссу, и сказать что предыдущий автор вставил а код ребусов, и его требуется сначала переписать. А после разбора ТЗ может оказаться, что там шаблоны вообще как собаке пятая нога, потому что вариантов типов всего два, и других из логики ТЗ никогда не будет. Т.о. на примере данного кода можно понять только то, что С++ стал читаем только через 20 лет после появления шаблонов и SFINAE.
Исходная версия seiken, :
вот этот вариант на C++20 вполне читаем, а то, что выше - на такой код сразу хочется позвонить боссу, и сказать что предыдущий автор вставил а код ребусов, и его требуется сначала переписать. А после разбора ТЗ может оказаться, что там шаблоны вообще как собаке пятая нога, потому что вариантов типов всего два, и других из логики ТЗ никогда не будет.