Единственное, для чего это нужно — избежать конфликтов при установке ПО и добиться удаления всех данных вместе с приложением. Эта проблема уже решена в *nix системах.
Приложения устанавливаются и удаляются централизовано, системе известно о всех файлах и всех конфликтах. Общие настройки хранятся в /etc/, и обычно успешно удаляются вместе с приложением, настройки пользователя — в ~/.*, они сохраняются после удаления приложения, но никто не мешает убрать их в одно действие. Никаких проблем с чисткой системы, если самостоятельно ничего не ломать.
Сейчас в меня полетят камни по поводу софта, которого нет в репозиториях, но я считаю, что завернуть приложение в пакет, прежде чем ставить на систему — простое действие, которое по силам каждому (сам иногда ebuild-ы пишу).
Чтобы не удалялся из памяти при выходе из функции, позже он удаляется в деструкторе util::Lua. Можно было бы сделать еще одну шаблонную функцию (с кучей специализаций), на момент написания мне проще было обойтись лямбдой.
Мне жутко не хотелось завязывать проект на какие-то дополнительные утилиты. Пихать в репозиторий код, который может быть сгенерирован — плохо, а настраивать cmake чтобы использовал сторонние программы при сборке — лень.
А еще было интересно, можно ли решить эту задачу, не прибегая к генераторам кода, используя только средствами языка.
Приложения устанавливаются и удаляются централизовано, системе известно о всех файлах и всех конфликтах. Общие настройки хранятся в /etc/, и обычно успешно удаляются вместе с приложением, настройки пользователя — в ~/.*, они сохраняются после удаления приложения, но никто не мешает убрать их в одно действие. Никаких проблем с чисткой системы, если самостоятельно ничего не ломать.
Сейчас в меня полетят камни по поводу софта, которого нет в репозиториях, но я считаю, что завернуть приложение в пакет, прежде чем ставить на систему — простое действие, которое по силам каждому (сам иногда ebuild-ы пишу).
А еще было интересно, можно ли решить эту задачу, не прибегая к генераторам кода, используя только средствами языка.