Концептуальные требования 26. января 2026 ixSci разработка (0) Шаблоны и построенное на них метопрограммирование являются одним из мощнейших инструментов, доступных C++-программисту. К сожалению, доступность метопрограммирования на всём протяжении жизни C++ определялась не столько тем, что позволяет сделать язык, сколько тем, что конкретный программист на C++ способен выжать из него. Потому что даже С++98 позволял уже очень многое, а с добавлением variadic templates и expression SFINAE в C++11 C++ обрёл, наверное, все необходимые инструменты метапрограммирования. Но проблема того, что им могут заниматься только избранные индивиды, никуда с C++11 не ушла. Надо сказать, что не ушла она и поныне, но практически в каждой итерации языка мы получали что-то, что позволяло его упростить, сделать метапрограммирование более понятным и доступным рядовому C++-программисту. Одной из наиболее важных вех на этом пути стал стандарт C++20, в котором появились долгожданные ограничения параметров шаблона (англ. constraints), и именно о них пойдёт речь в настоящей статье. [Ещё]
А есть ли функция? 10. апреля 2017 ixSci разработка (0) В прошлой статье мы рассмотрели, что такое SFINAE и как оно работает, а в настоящей статье мы воспользуемся ранее полученными знаниями. Хотя она и не конкретно по SFINAE, скорее о метапрограммировании в общем. Здесь речь пойдёт о всего одной задаче, которая довольно успешно решается в C++: проверка ... [Ещё]
SFINAE. Как много в этом слове 12. декабря 2016 ixSci разработка (0) Одной из наиболее сложных для понимания функциональностей в C++, по праву считаются шаблоны. Нет, не их простейшее применение — здесь, как правило, у людей не возникает больших проблем. Проблемы возникают тогда, когда с использованием шаблонов начинают писать код, который порождает другой код, т.е. писать код на языке шаблонов — это называется метапрограммирование. Многие люди, увидев подобный код, впадают в состояние транса — тут ещё хуже чем с указателями, если указатели не все понимают, то с шаблонами дело обстоит ещё хуже. [Ещё]