Re[8]: Утилита для удаления из текста C++ блоков #if с подхо
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 12.07.23 12:40
Оценка: +1
Здравствуйте, 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++" Учите своих студентов, наемных работников и тех, кто от вас зависит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.