Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

boost::python fails to handle std::unique_ptr as object holder

Aberta
#202 12 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
cpp, python
Domínio
backend

Direção de pesquisa

Comece reproduzindo o exemplo com boost/python/object/make_ptr_instance.hpp e as declarações de Boost.Python class_ mostradas na issue. Rastreie por que o holder unique_ptr é copiado quando std::auto_ptr é aceito. A tarefa estará concluída quando o caso relatado de object-holder unique_ptr compilar e tiver cobertura para o comportamento relevante.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

In ticket https://svn.boost.org/trac10/ticket/7711, 5 years ago, somebody complained that std::unique_ptr cannot be used as an object holder in boost::python. Although the ticket was closed, I still have the problem (in boost 1.58). Is there a solution available?

#include <boost/python.hpp>
#include <memory>

struct Foo {};

BOOST_PYTHON_MODULE(foo) {
    // This compiles fine.
    boost::python::class_<
          Foo
        , std::auto_ptr<Foo>
        , boost::noncopyable
        >("Foo1", boost::python::no_init)
        ;

    // This doesn't compile.
    boost::python::class_<
          Foo
        , std::unique_ptr<Foo>
        , boost::noncopyable
        >("Foo2", boost::python::no_init)
        ;
}

Compile error (std::unique_ptr misses copy constructor):
usr/include/boost/python/object/make_ptr_instance.hpp:24:38: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = moveit::python::Foo; _Dp = std::default_delete<moveit::python::Foo>]’

Linguagem predominante
C++
Estrelas
537
Forks
223
Merge médio
11h 22min
PRs com merge (30d)
2

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de boostorg/python

Todas as issues de boostorg/python

Issues semelhantes

Mais issues de C++

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.