Mac gcc erlaubt nicht explizit den Aufruf von std :: string :: ~ string

8
%Vor%

Hier ist der Fehler, den ich bekomme:

%Vor%

Ich benutze ein cmake-Projekt ... Meine gcc-Version, installiert über brew, folgt:

  

gcc --Version       Konfiguriert mit: --prefix = / Bibliothek / Entwickler / CommandLineTools / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1       Apple LLVM Version 7.0.2 (clang-700.1.81)       Ziel: x86_64-apple-darwin15.2.0       Threadmodell: posix

Ich konnte die Zeichenfolge ~ nicht finden, die irgendwo in den Headerdateien definiert ist. Am Ende änderte ich es wie folgt und das funktioniert. Es ist ok für meinen Anwendungsfall für jetzt.

%Vor%

Dieses Original scheint korrekt zu sein und funktioniert perfekt in GCC auf Linux und CYGWIN. Was ist das Problem, das die Arbeit an Mac verhindert? Vorlagen? Etwas anderes?

    
YasserAsmi 01.01.2016, 23:00
quelle

1 Antwort

2

Dies ist keine vollständige Antwort. Aus irgendeinem Grund funktioniert using namespace std; , aber ohne das clang fehlschlägt. Betrachten Sie dieses Beispiel:

%Vor%

Ohne die using namespace foo; -Zeile liefert clang einen Fehler expected the class name after '~' to name a destructor . Aber mit dieser Linie funktioniert es. Erweiterung auf std::string :

%Vor%

es funktioniert. Es funktioniert auch mit der engeren using std::string; .

Dies beantwortet nicht die Frage nach warum clang fehlschlägt. Ich weiß nicht, ob es ein Fehler in clang oder in gcc ist. Aber es gibt zumindest einen Workaround.

Es kann sich lohnen, dies als Fehler in clang zu melden und dann zu entscheiden, ob es wirklich ein Fehler ist oder nicht.

    
Cornstalks 01.01.2016, 23:09
quelle

Tags und Links