boost make_shared leva em uma referência const. Alguma forma de contornar isso?

Eu estou usando impulsionar ponteiros compartilhados no meu programa e eu tenho uma classe que leva como parâmetros uma referência para outro objeto. O problema que estou correndo é a função make_shared requer que todos os parâmetros sejam uma referência const, e eu recebo erros de compilação se o construtor da minha classe não permitir que parâmetros de referência const sejam passados.

Alguém sabe a razão por trás disso? Além disso, há algo que eu possa fazer para contornar isso?

exemplo de código do que está me dando problemas:

class Object
{
  public:
    Object(int& i)
    {
      i = 2;
    }
};


int main(int argc, char *argv[])
{
  int i = 0;
  boost::shared_ptr<Object> obj = boost::make_shared<Object>(i);
  return 1;
}

Isso resulta em um erro do compilador que afirma o seguinte

: make_shared.hpp: 185: erro: nenhuma função correspondente para chamar para Object :: Object (const int &) 'note: os candidatos são: Object :: Object (objeto const & note): Object :: Object (int &)

Se o parâmetro para o construtor de objetos é um const int, isso funciona. Estou curioso para saber por que o make_shared se comporta dessa maneira.

questionAnswers(6)

yourAnswerToTheQuestion