"Lambda" Expression C++



  • @AmigaC Dann solltest du eventuell mal den compiler aktualisieren wenn das möglich ist.
    z.b. gcc 10.4.0/11.3.0 liefert folgende Fehlermeldung:

    error: expression cannot be used as a function
       18 | auto it = std::find_if(vC1.begin(), vC1.end(), [](const auto& rc){ return rc.dRadius() > 10; });
          |                                                                           ~~~~~~~~~~^~
    

    Oder clang 14.0.6/15.0.5 :

    error: called object type 'double' is not a function or function pointer
    auto it = std::find_if(vC1.begin(), vC1.end(), [](const auto& rc){ return rc.dRadius() > 10; });
                                                                              ^~~~~~~~~~
    

    Selbst MSVC 2015/2017 liefert eine passendere Meldung

    error C2064: term does not evaluate to a function taking 0 arguments
    


  • @firefly I see, auf jeden Fall... ist der Projekt mit MSVC v143 compliliert, auf jeden Fall hab ich letztens VS auf die neueste Version 17.4.3 aktualisiert............ Müsste ich wahrscheinlich zusätzliche MSVC Package wenn sowas gibt instalieren? Oder clang verwenden........? Ich mag wechsel der Compilertyp net so auch nicht Umgebungen.... One way mainly 😃 Aber für diese Zwecke ist ja vielleicht hilfreich, das war nämlich nicht das erste Mal wo mein Compliler danebenliegende Fehlermeldungen lieferten



  • Das Toolset v143 ist aber von VS 2022, also das neueste, s.a. Binärkompatibilität von C++ zwischen Visual Studio-Versionen:

    (Die Toolsetversion ist v140 für Visual Studio 2015, v141 für 2017, v142 für 2019 und v143 für 2022)

    Verwendest du denn direkt ein VS 2022-Projekt oder wie kompilierst du?



  • Dieser Beitrag wurde gelöscht!


  • Hi @Th69 Genau ich verwende direkt in VS 2022 Projekt dies,

    dann bin ich zumindest happy dass mein VS noch up2date isch...😅



  • Dann sollte es die gleiche Meldung liefern wie die älteren versionen...
    Also bitte liefer mal die komplette Fehlermeldung (copy und paste) ohne eigene Interpretation.

    Zugegeben die Fehlermeldungen von C++ Compilern können verwirrend sein, besonders wenn templates mit im spiel sind (was hier der fall ist für std::find_if).



  • @firefly danke

    Fehler C2064 Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt

    Fehler C2451 Ein bedingter Ausdruck vom Typ "void" ist ungültig.

    Ich sage hier vorab dass ich Warninglevel auf 4 gestellt habe und alle Warnungen wie errors behandeln ^^;;



  • @AmigaC sagte in "Lambda" Expression C++:

    @firefly danke

    Fehler C2064 Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt

    Fehler (aktiv) E0109 Der Ausdruck vor den Klammern des sichtbaren Aufrufs muss einen Funktionstyp (pointer-to-) aufweisen

    Ich sage hier vorab dass ich Warninglevel auf 4 gestellt habe und alle Warnungen wie errors behandeln ^^;;

    Da hat sich die Fehlermeldung sogar verbessert gegenüber den älteren versionen.
    Da steht dass der Ausdruck (in deinem falle rc.dRadius) kein Funktionstyp ist.
    Der Compiler hat dir also alle Informationen geliefert um den Fehler zu finden.

    Und eine internetsuche nach dem Fehlercode (C2064) hätte es sehr deutlich gemacht:
    Stichwörter: Microsoft Visual Studio C2064
    https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-C2064?view=msvc-170



  • @firefly Hey entschuldige mich und bitte um Gnade 😃 Ich habe aus versehen falsche Fehler erzeugt da ich mit Code heute morgen weitergearbeitet habe. Ich habe in vorheriger Antwort eben die richtige Fehlermeldungen gerade korrigiert eingefügt. Sorry.
    Also jetzt sind sie wie vorher.



  • @firefly Sorry.............und danke echt. Das mir verbesserte Fehlermeldung kam weil ich aus versehen falsche zeile zum error drängte......!



  • @AmigaC sagte in "Lambda" Expression C++:

    @firefly Sorry.............und danke echt. Das mir verbesserte Fehlermeldung kam weil ich aus versehen falsche zeile zum error drängte......!

    Ändert nichts an meiner Aussage 😉 denn Der Fehlercode (C2064) ist der gleiche.
    Daher solltest du lernen die Fehlermeldungen des compilers zu verstehen bzw. damit umzugehen.
    Meist reicht eine suche im internet aus, um eine Beschreibung zu finden, bzw. eine beantwortete Frage von jemand anderes bezüglich der gleichen Fehlermeldung.

    Falls die Suche kein Ergebnis liefert oder du die gefundenen Antworten nicht verstehst, dann kannst du gerne hier nachfragen.
    Und vergiss dabei nicht die komplette Fehlermeldung des compilers anzugeben.



  • @firefly Danke dir, ha der C2064 bleibt klar..... ich tu mal dann in der Zukunft in https://learn.microsoft.com zu schauen, bis auf Linkerfehler scheint die Seite gut die Bugs identifizieren....!

    Tausend Danke


Anmelden zum Antworten