Опять грабли на пустом месте.
class CA
{
std::vector<std::unique_ptr<int> > m_V;
public:
int get_foo(const std::unique_ptr<const int>& v)const;
int set_foo(const std::unique_ptr<int>& v, const int val);
void foo()
{
for(auto& v: m_V)
{
const int val = 2 * get_foo(v);// error: невозможно преобразовать "std::unique_ptr<int, ...>&" в "std::unique_ptr<const int, ...>&"
set_foo(v, val);
};
}
};
В случае обычных указателей никаких таких проблем не было бы
class CA
{
std::vector<int*> m_V;
public:
int get_foo(const int* v)const;
int set_foo(int* v, const int val);
void foo()
{
for(auto& v: m_V)
{
const int val = 2 * get_foo(v);
set_foo(v, val);
};
}
};