ubuntuusers.de

C++: libsource-highlight-dev und boost-1.46: deleted function

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

mandrake1988

Anmeldungsdatum:
25. Dezember 2008

Beiträge: 68

Wohnort: Berlin

Hi @all,

ich habe hier ein relativ großes C++/Qt5 Projekt, für welches ich gerade eine Übertragung in ein öffentliches Repository vorbereite. Das ganze kompiliert bei mir unter Ubuntu 12.10 wunderbar, allerdings dachte ich, es wäre für die Veröffentlichung schöner, eine Anleitung für die aktuelle LTS-Version anzubieten.

Bei dieser scheint es aber irgendein Problem zwischen im Titel genannter "libsource-highlight" und den Boost-Bibliotheken zu geben, denn beim Kompilieren bekomme ich folgende tolle Meldung:

error: use of deleted function 'boost::shared_ptr<srchiliteqt::TextFormatter>::shared_ptr(const boost::shared_ptr<srchiliteqt::TextFormatter>&)'
note: 'boost::shared_ptr<srchiliteqt::TextFormatter>::shared_ptr(const boost::shared_ptr<srchiliteqt::TextFormatter>&)' is implicitly declared as deleted because 'boost::shared_ptr<srchiliteqt::TextFormatter>' declares a move constructor or move assignment operator

Ich habe mir schonmal die installierten Versionen der entsprechenden Libs angeschaut:

Ubuntu 12.10

libsource-highlight 3.1.6-1, libboost 1.49 (damit gehts wunderbar)

Ubuntu 12.04

libsource-highlight 3.1.5-1, libboost 1.46 (damit gehts nicht)

Ich könnte natürlich jetzt lustig rumpanschen und irgendwelche nicht vorgesehen Versionen einspielen, mag ich aber nicht. Meine Frage ist hauptsächlich: Liegt hier ein Konfigurationsproblem an meinem System vor (gerade frisch aufgesetztes 12.04.2 mit allen Updates in einer VM) oder ist da vielleicht in den Paketen ein Fehler drin?

Hat jemand da Hinweise, sowas vielleicht schonmal gesehen?

Danke im Voraus!

mandrake

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Der Grund steht ja da: Boost nutzt nun einen Move-Operator, der mit C++11 eingeführt wurde.

Kannst Du angeben, das Projekt mit dem C++03-Standard zu übersetzen? Dafür sollte Boost hoffentlich noch einen normalen Kopierkonstruktor anbieten.

Gruß Dee

mandrake1988

(Themenstarter)

Anmeldungsdatum:
25. Dezember 2008

Beiträge: 68

Wohnort: Berlin

Hi,

danke für die Antwort, aber das Problem hat sich heute Morgen nach Rücksprache mit meinem Prof geklärt. Das Problem zwischen dem alten Boost und der Source-Highlighter Bibliothek scheint bekannt zu sein und wurde in neueren Versionen behoben (die man mit den Standardquellen in 12.04 natürlich nicht bekommt).

Wir sind jetzt drumrum gekommen, indem wir einfach ein neueres Boost benutzt haben über ein externes PPA (https://launchpad.net/~jkeiren/+archive/ppa). Nun musste man zwar aufgrund von Versionseinschränkungen im Paketmanager die Source-Highlighter Bibliothek manuell bauen, aber das ist ja das kleinste Übel.

Auf C++11 verzichten geht leider nicht, da wir auch an anderen Stellen einiges aus dem neuen Standard verwenden.

Aber der Link zum Move Operator ist sehr interessant.

Grüße, mandrake

Antworten |