/ / nenhum membro chamado 'dynamic_cast_tag' no namespace boost :: detail (SALOME 7.3.0) - c ++, boost, shared-ptr, dynamic-cast

nenhum membro chamado 'dynamic_cast_tag' no namespace boost :: detail (SALOME 7.3.0) - c ++, boost, shared-ptr, dynamic-cast

Eu estou tentando compilar SALOME 7.3.0 no OSX Mavericks (Darwin 13.0.0) e ter boost 1.55 instalado (usando homebrew). O GCC engasga com uma das funções do kit de ferramentas do SALOME (SRC / DF) ao tentar definir uma função de modelo, o erro é:

    In file included from /Users/dingram/Developer/SALOME/KERNEL_SRC_7.3.0/src/DF/DF_Attribute.cxx:20:
/Users/dingram/Developer/SALOME/KERNEL_SRC_7.3.0/src/DF/DF_definitions.hxx:50:44: error: no member named "dynamic_cast_tag" in namespace
"boost::detail"
boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
^

o fragmento de código é

#include <iostream>
#include <stdio.h>
#include <boost/shared_ptr.hpp>

template<class T> class df_shared_ptr: public boost::shared_ptr<T>
{
public:
df_shared_ptr() {}

template<class Y>
explicit df_shared_ptr(Y * p)
{
boost::shared_ptr<T>::reset(p);
}

template<class Y>
df_shared_ptr(df_shared_ptr<Y> const & r):
boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
{}

Eu não sou um programador de C ++ e por isso estou mais do que um pouco frustrado. Há relatos de problemas semelhantes nos fóruns do SALOME, mas sem respostas.

Respostas:

1 para resposta № 1

Uma mudança recente na biblioteca de reforço eliminou boost :: detail :: dynamic_cast_tag () em favor de um novo mecanismo para conversão dinâmica. A documentação para isso é pobre ou inexistente.

Você deve ser capaz de construir com um impulso mais antigo, acho que 1,44 deve ser suficiente.


0 para resposta № 2

Eu me deparei com um problema semelhante. editando a fonte e usando dynamic_pointer_cast <> resolveu o problema. Nesse caso:

  boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())

torna-se

  boost::shared_ptr<T>(dynamic_pointer_cast<T>(r))