std::unique_ptr<const int>
Это также работает как и для сырых указателей.
int* const a = ...
В вашем случае вы запрещаете манипуляции с умным указателем но не типом хранящимся в умном указателе.
То есть операции типа reset будут не доступны.
Если использовать shared_ptr то можно сделать неявный каст. С unique_ptr придется мувать для преобразования.
Для полной константности должно быть const std::unique_ptr<const int>
примерно как
const int* const x = ....;
Проблема в том что много думаете как правильно писать вместо того чтобы писать. Лучше много написать говнокода чем думать над архитектурой и ничего не сделать.
Вспомнилась фраза -
Если мы будем думать как ходить, то не пройдем и метра.
У меня немного другая ситуация, меня просят писать говнокод. Не любят у нас все эти паттерны, solid, библии Мартина про чистый код и приватные поля. Приходится переучиваться на говнокодера. Это намного сложнее.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
std::unique_ptr<const int>Это также работает как и для сырых указателей.
int* const a = ...
В вашем случае вы запрещаете манипуляции с умным указателем но не типом хранящимся в умном указателе.
То есть операции типа reset будут не доступны.
Если использовать shared_ptr то можно сделать неявный каст. С unique_ptr придется мувать для преобразования.
Для полной константности должно быть
const std::unique_ptr<const int>примерно как
const int* const x = ....;