Próbuję skompilować SALOME 7.3.0 na OSX Mavericks (Darwin 13.0.0) i mają zainstalowane 1.55 boost (używając homebrew). Dławiki GCC w jednej z funkcji zestawu narzędzi SALOME (SRC / DF) podczas próby zdefiniowania funkcji szablonu błąd to:
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())
^
fragment kodu to
#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())
{}
Nie jestem programistą C ++, więc jestem bardziej niż trochę utrudniony. Istnieją doniesienia o podobnych problemach na forach SALOME, ale nie ma odpowiedzi.
Odpowiedzi:
1 dla odpowiedzi № 1Niedawna zmiana w bibliotece boostów wyeliminowała boost :: detail :: dynamic_cast_tag () na korzyść nowego mechanizmu dynamicznego rzutowania. Dokumentacja tego jest słaba lub nie istnieje.
Powinieneś być w stanie budować ze starszym doładowaniem, myślę, że 1,44 powinno wystarczyć.
0 dla odpowiedzi nr 2
Wpadłem na podobny problem. edycja źródła i użycie dynamic_pointer_cast <> rozwiązało problem. W tym przypadku:
boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
staje się
boost::shared_ptr<T>(dynamic_pointer_cast<T>(r))