Я также думаю, что RIIA не является полностью полезной заменой для обработки исключений и наличия оператора finally. Кстати, я также думаю, что RIIA это плохое имя во всем мире. Я называю эти типы классов «уборщиками» и использую их МНОГО. В 95% случаев они не инициализируют и не получают ресурсы, они применяют некоторые изменения на определенной основе или принимают что-то уже настроенное и проверяют, уничтожено ли оно. Это официальное название одержимого интернетом, которое я оскорбляю, даже если предположить, что моё имя может быть лучше.
Я просто не думаю, что разумно требовать, чтобы в каждой сложной настройке какого-то специального списка вещей был написан класс, содержащий его, чтобы избежать сложностей при очистке всего этого обратно перед лицом необходимости поймать несколько типов исключений, если что-то пойдет не так в процессе. Это привело бы ко многим специальным классам, которые просто не были бы необходимы иначе.
Да, это хорошо для классов, которые предназначены для управления конкретным ресурсом, или для общих классов, которые предназначены для обработки набора похожих ресурсов. Но даже если у всех вещей есть такие оболочки, координация очистки может быть не просто вызовом деструкторов в обратном порядке.
Я думаю, для C ++ имеет смысл иметь наконец-то. Я имею в виду, господи, за последние десятилетия на него было наклеено так много битов и бобов, что кажется, что странные люди вдруг станут консервативными из-за чего-то вроде, наконец, что может быть весьма полезным и, вероятно, не таким сложным, как некоторые другие добавил (хотя это только предположение с моей стороны.)