SFINAE. Как много в этом слове

Одной из наиболее сложных для понимания функциональностей в C++, по праву считаются шаблоны. Нет, не их простейшее применение — здесь, как правило, у людей не возникает больших проблем. Проблемы возникают тогда, когда с использованием шаблонов начинают писать код, который порождает другой код, т.е. писать код на языке шаблонов — это называется метапрограммирование. Многие люди, увидев подобный код, впадают в состояние транса — тут ещё хуже чем с указателями, если указатели не все понимают, то с шаблонами дело обстоит ещё хуже. [Ещё]