Подумайте о функции C, возвращающей то, что должно быть free
d, например POSIX strdup()
. Я хочу использовать эту функцию в С++ 11 и избегать любых утечек, это правильный способ?
#include <memory>
#include <iostream>
#include <string.h>
int main() {
char const* t { "Hi stackoverflow!" };
std::unique_ptr<char, void(*)(void*)>
t_copy { strdup(t), std::free };
std::cout << t_copy.get() << " <- this is the copy!" <<std::endl;
}
Предполагая, что это имеет смысл, можно использовать аналогичный шаблон с не указателями? Например, для функции POSIX open
, которая возвращает int
?