Здравствуйте, Marty, Вы писали:
M>А SFINAE был уже в C++03, но я тогда не прочувствовал его в полной мере, сам тогда такого кода почти не писал, только использовал, часто не понимая, как оно работает, да и хелперов из C++11 — C++17 не было, сейчас хочу прочувствовать всё это полной ложкой
Ты просто возьми себе на заметку, что концепты имеют существенные преимущества перед SFINAE. Одним из главных преимуществ я бы назвал
Partial ordering. При использовании SFINAE все перегрузки равноправны и необходимо обеспечить, чтоб все фильтры были взаимоисключающими во избежание конфликтов. При большом количестве перегрузок в таких областях как ввод-вывод, сериализация, форматирование и т.п. это иногда превращается в нехилый геморрой. Использование концептов же позволяет делать одни перегрузки более специальными, чем другие. Это очень похоже на то, как если бы мы писали перегрузки для базового и производного классов.