Здравствуйте, so5team, Вы писали:
S>для C++ до C++98 (особенно до появления в C++ шаблонов) типично было делать так
Шаблоны были
фундаментальным нововведением в языке — как и ранее классы. Они слишком многое поменяли в практике программирования. Было бы странно, останься подходы прежними.
Но программа на C++ без шаблонов не становится "программой на C с классами" — она остается "программой на C++".
Можно говорить о "программе на C++ 2.0", "программе на C++11" и т.п.
S>Но вот появляется C++98 и типично становится делать так:
S>S> std::auto_ptr<A> make_A() { return std::auto_ptr<A>(new A()); }
S>
Здесь принципиально лишь использование шаблона, без которого такая конструкция невозможна. А вот использование именно готового варианта из std — непринципиально. Программа на C, использующая собственные реализации strlen/strcpy и прочего, не перестает быть "программой на C", даже если не будет использовать вообще ни одной функции из libc.
S>Потом приходит C++11/14 и типично становится делать так:
S>S> auto make_A() { return std::make_unique<A>(); }
S>
Я предпочитаю использовать auto только в шаблонах, а вне их — только там, где ошибка в типе не влечет неявных глюков. Отсутствие auto, лямбда-функций или чего-то еще тоже не выводит программу из множества "программ на C++".
S>то, что не находит применения в актуальном C++ (из-за потенциальных багов или неудобств), типичным C++ считать перестается.
Это совершенно нормально, ничего не имею против. Но речь была не о "типичном C++", а о неком
каноническом наборе, без которого программа рискует быть подвергнута остракизму.
S>И как называется ваша секта?
У нас нет секты.
Секта предполагает набор жестких правил, нарушение которых преследуется лишь потому, что возникает опасность снижения авторитета руководителей и разрушения секты. Хватит и того, что я много лет избегал использования goto для выхода из блока, еще в ранней юности чрезмерно впечатлившись идеей структурного программирования, и применяя извращения вроде do { } while (false).
S>"Не учите меня C++"?
"Не учите меня (и других тоже)
единственно правильному C++"
Учите своих студентов, наемных работников и тех, кто от вас зависит.