Off-top mode on. Начиная с С++17 добавляют всякую ненужную дичь. Давече прочитал про грядущие нововведения С++23 — прям "ооочень нужные штуки", как мы жили без них?
Складывается ощущение, что в коммитете просто каждый пытается оптимизировать свои алгоритмы: Гугл — свой Хром, Яндекс — свои микросервисы, ну и остальные до кучи. Потому как мне непонятно, зачем вводить коды возврата, а пару стандартов позже ещё что-то выдумывать (речь про std::expected)?
Но это всё брюзжание. Интересно следующие — почему не вводят конструкцию, которая бы позволила гарантировать tail call optimization? То есть пишешь, что-то вроде
unsigned factorial(unsigned n) {
if (n)
[[force-tco]] return n * factorial(n - 1);
else
return 1;
}
и если TCO не удаётся по каким-то причинам, то это становится ошибкой компиляции. Ведь тогда бы можно было писать на С++ как на Лиспе! Код бы стал лаконичнее и безопаснее. А что вы думаете?