Недавно я наткнулся на старую C-функцию, возвращающую указатель на статический массив.Я написал обертку вокруг этой функции и возвратил std::unique_ptr
, который использует no-delete, чтобы подчеркнуть тип возвращаемого указателя - предупреждение «не удаляй меня» для пользователя.Вот пример кода
extern "C" int *f(int i);
struct noop
{
template <typename T>
void operator() (T t) const noexcept
{
}
};
class MyClass
{
public:
std::unique_ptr<int, noop> F(int value) const
{
return std::unique_ptr<int, noop>(f(value));
}
};
Есть ли более чистый способ сделать это без определения структуры без удаления?