Здравствуйте, lpd, Вы писали:
lpd>Я сравнивал С++17 не с С, а с C++98.
Тогда откуда претензии к трехэтажным шаблонам? Позволю себе напомнить, что шаблоны, которые можно параметризовать шаблонами -- это не фишка C++17, и даже не фишка C++11. Это все появилось еще в C++98.
Даже полиморфные лямбды из C++14 -- это всего лишь синтаксический сахар для функторов, которые можно было вручную писать в C++98, вроде вот такого:
struct my_functor {
template<class A> void operator()(A arg) {...}
};
Ну и смею напомнить, что книга Александреску, которая показала широким массам, что такое современный C++, -- это ведь исключительно C++98.
А уж какие претензии к weak_ptr вообще не понятно. Это ведь не изобретение C++11. В Boost-е weak_ptr появился задолго до по вполне себе объективным причинам. Он не имеет отношения к особенностям языка, а служит для решения фундаментальной проблемы борьбы с циклическими ссылками в языках без полноценного автоматического GC. И аналоги Boost-овского weak_ptr были и в других библиотеках, если мне не изменяет склероз.