Информация об изменениях

Сообщение Re[7]: Утилита для удаления из текста C++ блоков #if с подхо от 12.07.2023 11:33

Изменено 12.07.2023 11:47 so5team

Re[7]: Утилита для удаления из текста C++ блоков #if с подходящими условиями
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Что характерно, правила для "вот так" меняются по мере изменения стандартов C++, так что то, что какое-то время назад было "типичным C++", со временем становится "совсем не C++".


Что характерно, это происходит не просто так. Например, для C++ до C++98 (особенно до появления в C++ шаблонов) нормально было делать так:

class B {
public:
  A * make_A() { return new A(); }
  ...
};
...
A * a = b->make_A();
...
delete a;


Но вот появляется C++98 и нормальным становится делать так:
class B {
public:
  std::auto_ptr<A> make_A() { return std::auto_ptr<A>(new A()); }
  ...
};
...
std::auto_ptr<A> a = b->make_A();
... // Стало легче, не нужно делать delete.


Потом приходит C++11/14 и нормальным становится делать так:
class B {
public:
  auto make_A() { return std::make_unique<A>(); }
  ...
};
...
auto a = b->make_A();
...


Ну и как-то само собой получается, что то, что не находит применения в актуальном C++ (из-за потенциальных багов или неудобств), нормальным C++ считать перестается. Эволюция и прогресс, ничего не поделать.

ЕМ>Мне совершенно по барабану, какие в этих сектах нынче правила, я тупо использую возможности языка, подходящие для моих, а не высших целей.


И как называется ваша секта? "Не учите меня C++"?
Re[7]: Утилита для удаления из текста C++ блоков #if с подхо
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Что характерно, правила для "вот так" меняются по мере изменения стандартов C++, так что то, что какое-то время назад было "типичным C++", со временем становится "совсем не C++".


Что характерно, это происходит не просто так. Например, для C++ до C++98 (особенно до появления в C++ шаблонов) типично было делать так:

class B {
public:
  A * make_A() { return new A(); }
  ...
};
...
A * a = b->make_A();
...
delete a;


Но вот появляется C++98 и типично становится делать так:
class B {
public:
  std::auto_ptr<A> make_A() { return std::auto_ptr<A>(new A()); }
  ...
};
...
std::auto_ptr<A> a = b->make_A();
... // Стало легче, не нужно делать delete.


Потом приходит C++11/14 и типично становится делать так:
class B {
public:
  auto make_A() { return std::make_unique<A>(); }
  ...
};
...
auto a = b->make_A();
...


Ну и как-то само собой получается, что то, что не находит применения в актуальном C++ (из-за потенциальных багов или неудобств), типичным C++ считать перестается. Эволюция и прогресс, ничего не поделать.

ЕМ>Мне совершенно по барабану, какие в этих сектах нынче правила, я тупо использую возможности языка, подходящие для моих, а не высших целей.


И как называется ваша секта? "Не учите меня C++"?