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