RAII для дескрипторов типа int.
От: antonio_banderas Россия  
Дата: 02.04.14 13:54
Оценка:
Есть дескриптор, есть функции создания-закрытия дескриптора, и функции для работы с дескриптором.
Цель — объект-обертка, который держит дескриптор и при выходе из области видимости его закрывает.
Если дескриптор имеет тип "указатель на что-нибудь", то с этим прекрасно справляется std::unique_ptr, например:
std::unique_ptr<FILE, int(*)(FILE*)> myfile(fopen("xxx.txt", "rb"), fclose); — и дальше работаем с файлом, не боясь потерять его закрытие.

Для типов-не-указателей std::unique_ptr не подходит.
Например, дескрипторы файлов в linux имеют тип int: int f = open("xxx.txt", O_RDONLY, 0); close(f);
Писать обертки-велосипеды я умею, в том числе шаблонные, если готовых решений нет, то придется так и делать.
Вопросы:
1. Есть ли готовые решения, чтоб держать дескриптор типа, например, int? (RAII)
2. Какими решениями пользуетесь вы, когда вам нужно держать дескриптор типа-не-указателя, чтоб не потерять его закрытие?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.