Пользуюсь GYP для сборки игры под Windows, macOS, iOS, и сервера под linux. Очень нравится, но автору статьи вряд ли подойдет. Гугл проект почти не поддерживает, но на гитхабе недавно появился форк, где энтузиасты во всю коммитят изменения. Изначально пытался пользоваться cmake, но по ряду причин он мне не подошел.
Как может проявляться UB при чтении из 2 указателей? Компилятор просто выкинет весь код со вторым указателем? Все примеры нарушения strict aliasing что я видел обязательно содержат запись. Насчет одной функции, то каждая функция ведь компилируется отдельно, и затем в других участках кода просто производится ее вызов. Для гарантии от инлайна функции можно помещать в разные единицы компиляции, и конечно же не включать link-time optimization.
Одно время долго ломал голову над проблемой strict aliasing, некоторые писали что большинство кодовой базы на github нарушает это правило. Но после долгих раздумий я пришел к выводу, что единственный способ получить UB — это запись и чтение в одном и том же участке памяти в пределах одной функции (включая inline). А встретить такое в реальных проектах довольно сложно.
Сушат явку
Так даже ПО в самолетах до сих пор обновляется дискетами.
Давно уже есть готовая реализация std::function без аллокаций https://github.com/WG21-SG14/SG14/blob/master/SG14/inplace_function.h
Ни разу не было необходимости в таком списке, и сложно представить практический случай. Думаю всегда можно найти более простые подходы.