До стандарта C++17 совместимым с C++ стандартом был C98. Не C99.
Начиная со стандарта C++17 совместимым с C++ стандартом стал C11.
Стандарт C, при этом, и обновляется, и улучшается. Многие спорные практики из ранних стандартов C сейчас или утратили силу, или получили титул опциональных.
Зачем чинить инструмент, который не сломан? Как исправлять инструмент, который достаточно эффективно покрывает задачи своего применения?
Относительно функции calculatePositionsAndBounds есть предложение использовать std::transform. Так можно избавиться от ссылки на контейнер в замыкании и еще больше прояснить смысл творящегося.
До стандарта C++17 совместимым с C++ стандартом был C98. Не C99.
Начиная со стандарта C++17 совместимым с C++ стандартом стал C11.
Стандарт C, при этом, и обновляется, и улучшается. Многие спорные практики из ранних стандартов C сейчас или утратили силу, или получили титул опциональных.
Зачем чинить инструмент, который не сломан? Как исправлять инструмент, который достаточно эффективно покрывает задачи своего применения?
Нечто вроде такого: