в виду, как у умных указателей
std::unique_ptr<int> ptr = new int[length];
std::unique_ptr<int> ptr = new int;
#include <iostream>
template <typename T>
class Cfoo {
private:
T *ptr_{nullptr};
public:
Cfoo(T *ptr) : ptr_(ptr) {
std::cout << "first" << std::endl;
}
~Cfoo() {
delete ptr_;
}
};
template <typename T>
class Cfoo<T *> {
private:
T *ptr_{nullptr};
public:
Cfoo(T *ptr) : ptr_{ptr} {
std::cout << "second" << std::endl;
}
~Cfoo() {
delete[] ptr_;
}
};
int main() {
Cfoo<int> cfoo1 = new int;
Cfoo<int *> cfoo2 = new int[1];
}
у тебя тут ошибка
std::unique_ptr<int[]> ptr = std::make_unique(10); std::unique_ptr<int> ptr = std::make_unique(10);
Обсуждают сегодня