Сегодня я столкнулся с похожей частью кода, и это заставило меня задуматься. Я сам провел небольшой эксперимент, как показано ниже.
Почему первая stuff
функция с общим указателем позволяет изменять значение, а вторая - нет?
#include <memory>
void stuff(const std::shared_ptr<int> &var)
{
*var = 5;
}
void stuff(const int* &var)
{
*var = 5;
}
int main()
{
auto a = std::make_shared<int>();
stuff(a);
int* b;
stuff(b);
return 0;
}