Navigation

    cpp-logo

    C++ Community

    • Registrieren
    • Anmelden
    • Suche
    • Kategorien
    • Aktuell
    • Tags
    • Beliebt
    • Gruppen
    1. Übersicht
    2. Beliebt
    Melde dich an, um einen Beitrag zu erstellen
    • Alle Kategorien
    • Ankündigungen
    •      Die Artikel
    • C++ (alle ISO-Standards)
    •      MFC
    •      VCL (C++ Builder)
    •      C++/CLI mit .NET
    •      Andere GUIs - Qt, GTK+, wxWidgets
    • Sonstige Programmiersprachen
    •      C (alle ISO-Standards)
    •      C# und .NET
    •      Java
    •      Assembler
    •      Webzeugs
    • Betriebssysteme
    •      WinAPI
    •      Linux/Unix
    •      Projekt: OS-Development
    •      DOS und Win32-Konsole (nur Lesen)
    • Weitere Fachbereiche
    •      Mathematik und Physik
    •      Spiele-/Grafikprogrammierung
    •      Datenbanken
    •      Compiler- und IDE-Forum
    •      Projekte
    • Jenseits der Programmierung
    •      Beruf und Ausbildung
    •      Stellenangebote
    •      Themen rund um die IT
    •      Gaming-Corner
    • Forentechnik
    • Archiv
    •      Das C++ Magazin
    •          Die Redaktion
    •          Die Autoren
    •          Allgemeines zum Magazin
    •          Archiv
    •      Organisation des Forumtreffens
    •      FAQs - Frequently Asked Questions
    •          FAQ - C (C89, C99 und C11)
    •          FAQ - Assembler
    •          FAQ - C++ (auch C++0x, C++11)
    •          FAQ - C++/CLI
    •          FAQ - C++ Builder (VCL/CLX)
    •          FAQ - C# und .NET
    •          FAQ - Compiler & IDEs
    •          FAQ - Datenbanken
    •          FAQ - DOS und Win32-Konsole
    •          FAQ - Grafik-/Spieleprogrammierung
    •          FAQ - GUIs
    •          FAQ - Java
    •          FAQ - Linux/Unix
    •          FAQ - Mathematik und Physik
    •          FAQ - MFC
    •          FAQ - Rund um die Programmierung
    •          FAQ - Sonstiges
    •          FAQ - Webzeugs
    •          FAQ - WinAPI
    •          FAQ - Forentechnik
    • Alle Themen
    • Neue Themen
    • Beobachtete Themen
    • Unbeantwortete Themen
    • Gesamter Zeitraum
    • Tag
    • Woche
    • Monat

    • Parameterpack verändern
      C++ (alle ISO-Standards) • • DocShoe  

      11
      0
      Stimmen
      11
      Beiträge
      429
      Aufrufe

      F

      @DNKpp sagte in Parameterpack verändern: @Finnegan sagte in Parameterpack verändern: Ich denke du hast da noch einen Fehler drin: template<typename T> replacement_forward_type_t<T> replace_forward( T& param ) sollte stattessen: template<typename T> replacement_forward_type_t<T> replace_forward( T&& param ) Das stimmt so nicht ganz. Da er keine automatische deduction nutzt, sondern den Typen selbst angibt, erhält er in ersterem Fall garantiert immer eine lvalue-ref. Jedoch übergibt er param in den gezeigten Fällen auch immer nur als lvalue-ref. Würde initial an execute eine rvalue-ref übergeben werden, würde es durch die manuelle Angabe von T mit deiner vorgeschlagenen Variante nicht compilen, da param dann entsprechend eine rvalue-ref erwarten würde. => https://godbolt.org/z/x31cv3KjP Oh ja, das stimmt! Das ist ja eine forward-Implementation, die die Typangabe im Template-Argument erwartet. Da bin ich auch echt einiger Verwirrung zum Opfer gefallen indem ich von Deduktion ausgegangen bin Ich war auf replacement_forward_type_t<T> fixiert, das meines Erachtens immer ein Alias für T&& ist, wenn es sich nicht um einen String handelt. Das kann auch nicht richtig sein, oder? Die Idee ist doch, nur selektiv eine RValue-Referenz zurückzugeben, und zwar dann, wenn auch das "Original" eine ist. Sonst kommt z.B. eine Funktion, der ich eine Variable via replace_forward übergebe auf die Idee, aus der Variable zu "moven" (?). EDIT: Ich weiß nicht ob ich dich richtig verstehe aber deine Erklärung scheint mir hier auch nicht ganz richtig zu sein: Erstmal Deduktion versuchen und den Unterschied zwischen Deduktion via auto und delctype(auto) kennen. Letzteres ist oft hilfreich, wenn man deduzieren und dabei die Referenz erhalten will. auto-Deduktion liefert dir nämlich immer den reinen Typ ohne die Referenz. Es ist zwar korrekt, dass auto immer eine value daduced, aber decltype(auto) deduced nicht garantiert eine Referenz, sondern kann auch eine Value sein! Möchtest du eine Referenz haben, dann sollte man auch zu auto&& greifen. Allerdings ist das für den hier gezeigten Anwendungsfall wohl genau das was er haben will: Referenz oder Value. Ich meinte damit nicht, dass immer eine Referenz deduziert wird, sondern dass diese erhalten bleibt, wenn das Original bereits eine ist. Was ist denn, wenn wir bei meinem Vorschlag anders herum gehen und eben nicht sagen, dass es eine "forward"-Implementation ist, sondern eine deduzierende Ersetzungs-Funktion? Das ist das, worauf in intuitiv eigentlich hinaus wollte. Damit, ein "forward" zu bauen war ich eh nicht so besonders glücklich (habe mich da an vorherigen Lösungen orientiert): template<typename T> auto replace( T&& param ) -> decltype(auto) { if constexpr( is_string_ref_v<T> ) { return std::string( "Replaced" ); } else if constexpr( is_char_array_ref_v<T> ) { return std::string( "Replaced" ); } else if constexpr( is_char_pointer_ref_v<T> ) { return std::string( "Replaced" ); } else { return std::forward<T>( param ); } } Das verwendet man dann so (aus dem ersten Post): template<typename ...Params> void execute(std::string const& name, Params&&... params) { impl()->execute(name, replace(std::forward<Params>(params))...); } Sollte das nicht funktionieren? std::forward übergibt Parameter in der Value Category die an execute übergeben wurde, replace ersetzt Strings und gibt dann eine RValue-Referenz auf std::string-Objekte zurück und "reflektiert" ansonsten den Parameter in derselben Value Category?
    • W

      Datenbereich (Pointer) => json
      C# und .NET • • worst_case  

      7
      0
      Stimmen
      7
      Beiträge
      233
      Aufrufe

      L

      @worst_case Genügt denn nicht eine der hier gelisteten Libs: https://en.cppreference.com/w/cpp/links/libs.html#Configuration:JSON, die eine Struct in ein JSON-Object (oder String...) umwandeln können, und dabei auch korrekt mit \0 chars umgehen können - sprich, diese Zeichen nicht mitserialisieren? Oder bin ich gerade auf dem falschen Dampfer unterwegs?
    • L

      Neue Programmier Ansicht.
      C++ (alle ISO-Standards) • • lukluk  

      4
      0
      Stimmen
      4
      Beiträge
      123
      Aufrufe

      E

      @lukluk sagte in Neue Programmier Ansicht.: Was haltet ihr davon, bin gerade am tüfteln für eine neue Programmiersprache. Es gibt bereits genügend.
    • Microsoft Dynamics 365 Inhouse Developer (m/w/d) | Beckhoff Automation GmbH & Co. KG
      Stellenangebote • • JAP  

      1
      0
      Stimmen
      1
      Beiträge
      24
      Aufrufe

      Bewerben Sie sich bis zum 27.03.2026. Jetzt bewerben! Zur Stellenanzeige auf Mein IT Job Ihre Bewerbung richten Sie bitte ausschließlich an die ausgeschriebene Firma. Als ERP Developer bringen Sie erste Erfahrungen bei Entwicklungen in Microsoft D365 oder AX mit. Ihr Hauptaugenmerk liegt dabei auf Microsoft Dynamics 365 Supply-Chain-Management (D365 SCM), unterstützt durch Azure Services und Power Platform. Sie arbeiten zusammen mit unseren internen D365 Consultants, um Beckhoff-spezifische Lösungen zu entwickeln, sowie unserem Supportteam, um Analysen für Bug-Fixing durchzuführen und Bugs entsprechend zu beheben. Dabei arbeiten Sie immer im Team, bestehend aus internen Kollegen und externen Partnern. Wir freuen uns auf Ihre vollständige Bewerbung inklusive Anschreiben, Lebenslauf und Zeugnissen. Microsoft Dynamics 365 Inhouse Developer (m/w/d) Tätigkeitsbereich • Ansprechpartner für unsere D365 Consultants bei der Entwicklung von Lösungen für unsere Geschäftsprozesse • Debugging und Bug-Fixing in enger Zusammenarbeit mit unserem Supportteam • Customizing und Programmierung unserer Anforderungen mithilfe der gängigen Werkzeuge • technische Dokumentation unserer Anpassungen im System • technische Reviews und Tests der Anpassungen Anforderungen • abgeschlossenes Studium der Informatik, Wirtschaftsinformatik oder Ingenieurinformatik mit ersten Berufserfahrungen oder eine vergleichbare Ausbildung mit Berufserfahrung • Kenntnisse in wenigstens einer der Programmiersprachen C#, .Net, C++, X++ sowie MS T-SQL • erste Erfahrungen mit Microsoft Dynamics 365 F&O/SCM oder einem vergleichbaren ERP-System sind wünschenswert • selbstständige, lösungsorientierte und strukturierte Arbeitsweise • sehr gute Deutsch- und Englischkenntnisse in Wort und Schrift Wir bieten • spannende Aufgaben in einem internationalen Hightechunternehmen mit viel Freiraum für innovative Ideen und fachliche Entwicklung • eine offene und familiär geprägte Unternehmenskultur mit flachen Hierarchien und eine Kultur des persönlichen Du • einen zukunftssicheren Arbeitsplatz bei einem wirtschaftlich solide aufgestellten und inhabergeführten Familienunternehmen • eine attraktive Vergütung, 30 Tage Urlaub, Zuschüsse zur betrieblichen Altersvorsorge über die gesetzlichen Vorgaben hinaus, vermögenswirksame Leistungen sowie Urlaubs- und Weihnachtsgeld • flexible und moderne Arbeitszeitmodelle, inklusive Gleitzeit sowie die Möglichkeit, Mehrarbeit durch Freizeit auszugleichen oder mit einem fairen Zuschlag auszahlen zu lassen • abhängig vom Aufgabengebiet die Option, nach einer erfolgreichen Einarbeitungsphase und Probezeit an einzelnen Tagen mobil zu arbeiten Wenn wir Ihr Interesse wecken konnten, senden Sie bitte Ihre Bewerbungsunterlagen an: Beckhoff Automation GmbH & Co. KG Personalabteilung Frau Theresa Isenberg Hülshorstweg 20 33415 Verl Telefon: +49 5246 963-0 E-Mail: jobs@beckhoff.com www.beckhoff.com/jobs Online-Bewerbung Bitte berücksichtigen Sie, dass wir Bewerbungsunterlagen, die uns postalisch zugehen, nicht an Sie zurückschicken. Die Bewerbungsunterlagen werden gemäß dem Bundesdatenschutzgesetz (BDSG) entsprechend gelöscht bzw. vernichtet.