Евгений Темиргалеев писал(а):
Ну в Аде есть те же шаблоны, декструкторы (финализаторы) для тэговых типов. Перепишите хотя бы в простом виде аналогично std::auto_ptr.
Еще там есть освобождение памяти, если локально объявленный тип прекращает свое существование. Деталей не помню - в книжке Гаввы "Адское программирование" об этом написано.
Ну, во-первых шаблоны и дженерики Адовские несколько различаются. Во-вторых, я конечно верю что можно ВСЁ переписать, было бы время и желание, но как-то странно получается... ниужели никто из пишущих на Аде до меня не задался этим вопросом? Почему этого нет в стандартной библиотеке (особенно в стандарте 2005 года).
А auto_ptr недостаточен (например его нельзя использовать в stl'овских контейнерах), надо полностью реализовывать буствовские умные указатели.
Собственно по книжке Гаввы и изучаю. Вот кусок оттуда:
Цитата:
Существует два способа освобождения пространства, которое было распределено в области динамической памяти, для его последующего повторного использования:
1: библиотека времени выполнения выполняет неявное освобождение распределеного пространства когда использованый для распределения пространства динамической памяти тип выходит из области видимости
Для этого случая примечательно то, что если тип описан на уровне библиотеки, то освобождение памяти не произойдет вплоть до завершения работы программы.
2: выполнение явного освобождения пространства динамической памяти в программе
Следует заметить, что стандарт языка Ада не определяет более четких требований и правил для алгоритмов библиотеки времени выполнения. Поэтому, реальные алгоритмы будут определяться реализацией конкретного компилятора и его библиотек поддержки. Следовательно, для уточнения этих сведений необходимо обратиться к документации на используемый компилятор, и здесь этот способ рассматриваться не будет.