abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:00 | Nová verze

    VirtualBox, tj. multiplatformní virtualizační software, byl vydán v nové verzi 7.2. Přehled novinek v Changelogu. Vypíchnou lze vylepšené GUI.

    Ladislav Hagara | Komentářů: 0
    dnes 14:11 | IT novinky

    Eric Migicovsky, zakladatel společnosti Pebble, v lednu oznámil, že má v plánu spustit výrobu nových hodinek Pebble s již open source PebbleOS. V březnu spustil předprodej hodinek Pebble Time 2 (tenkrát ještě pod názvem Core Time 2) za 225 dolarů s dodáním v prosinci. Včera představil jejich konečný vzhled (YouTube).

    Ladislav Hagara | Komentářů: 2
    dnes 12:44 | Zajímavý software

    Byla oznámena nativní podpora protokolu ACME (Automated Certificate Management Environment) ve webovém serveru a reverzní proxy NGINX. Modul nginx-acme je zatím v preview verzi.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 25.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    včera 11:55 | IT novinky

    Společnost Perplexity AI působící v oblasti umělé inteligence (AI) podala nevyžádanou nabídku na převzetí webového prohlížeče Chrome internetové firmy Google za 34,5 miliardy dolarů (zhruba 723 miliard Kč). Informovala o tom včera agentura Reuters. Upozornila, že výše nabídky výrazně převyšuje hodnotu firmy Perplexity. Společnost Google se podle ní k nabídce zatím nevyjádřila.

    Ladislav Hagara | Komentářů: 5
    včera 04:33 | Bezpečnostní upozornění

    Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250812 mikrokódů pro své procesory řešící 6 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána nová verze 1.25 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    12.8. 13:44 | Nová verze

    Byla vydána beta verze Linux Mintu 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 0
    12.8. 13:00 | IT novinky

    Provozovatel internetové encyklopedie Wikipedie prohrál v Británii soudní spor týkající se některých částí nového zákona o on-line bezpečnosti. Soud ale varoval britského regulátora Ofcom i odpovědné ministerstvo před zaváděním přílišných omezení. Legislativa zpřísňuje požadavky na on-line platformy, ale zároveň čelí kritice za možné omezování svobody slova. Společnost Wikimedia Foundation, která je zodpovědná za fungování

    … více »
    Ladislav Hagara | Komentářů: 2
    12.8. 12:55 | Nová verze

    Byla vydána verze 2.0.0 nástroje pro synchronizaci dat mezi vícero počítači bez centrálního serveru Syncthing (Wikipedie). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 3
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (52%)
     (19%)
     (4%)
     (5%)
     (3%)
     (1%)
     (1%)
     (16%)
    Celkem 392 hlasů
     Komentářů: 23, poslední 4.8. 13:01
    Rozcestník

    WTF C++ 20? Pomenované parametre

    21.10.2023 23:44 | Přečteno: 1307× | Hardware | poslední úprava: 22.10.2023 13:01

    Prečo s GCC viem skompilovať tento kód:

    class test_class_text
    {
    private:
        std::string _switch_pin;
    public:
        test_class_text(const std::string& switch_pin) :
            _switch_pin(switch_pin)
        {
    
        }
    };
    
    
    auto obj = test_class_text({ .switch_pin = "Lorem ipsum..." });
    a tento už nie?
    class test_class_int
    {
    private:
        int _switch_pin;
    public:
        test_class_int(const int& switch_pin) :
            _switch_pin(switch_pin)
        {
    
        }
    };
    auto obj = test_class_int({ .switch_pin = 5 });
    je už neskoro večer možno som unaveny a niečo som priehliadol, ale fakt nechapem prečo to so stringom funguje a s intom už nie?        

    Hodnocení: 50 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Gréta avatar 22.10.2023 02:07 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre

    si nedal celej příklad takže nevíme co tam čaruješ, předpokladam že to máš asi jako takle nějak:

    #include <string>
    class test_class_text
    {
    private:
        std::string _switch_pin;
    public:
        test_class_text(const std::string& switch_pin) :
            _switch_pin(switch_pin)
        {
     
        }
    };
    
    
    class test_class_int
    {
    private:
        int _switch_pin;
    public:
        test_class_int(const int& switch_pin) :
            _switch_pin(switch_pin)
        {
     
        }
    };
    
    int main()
    {
    auto obj = test_class_int({ .switch_pin = 5 }); 
    auto obj2 = test_class_text({ .switch_pin = "Lorem ipsum..." });
    return 0;
    }
    
    

    noa se mi jako zdá že tam neni problém s tou třídou co dělá s intem ale s tou co dělá se stringem, páč v konstruktoru 'test_class_text' vidim že chce referenci/vodkaz na string zatimco ty tam zkoušíš narvat const char * "Lorem ipsum" :D ;D

    když si to jakoby zkusíme zkompilovat uděláním 'g++ -std=c++20 main.cpp' tak nám to asi jako zanadává

    main.cpp: In function ‘int main()’:
    main.cpp:30:64: error: call of overloaded ‘test_class_text(<brace-enclosed initializer list>)’ is ambiguous
       30 | auto obj2 = test_class_text({ .switch_pin = "Lorem ipsum..." });
          |                                                                ^
    main.cpp:7:5: note: candidate: ‘test_class_text::test_class_text(const string&)’
        7 |     test_class_text(const std::string& switch_pin) :
          |     ^~~~~~~~~~~~~~~
    main.cpp:2:7: note: candidate: ‘test_class_text::test_class_text(const test_class_text&)’
        2 | class test_class_text
          |       ^~~~~~~~~~~~~~~
    main.cpp:2:7: note: candidate: ‘test_class_text::test_class_text(test_class_text&&)’
    

    ..a zanadávalo :D :D Vyřešit to mužem třeba tim že dotoho budem strkat dočasnej voběkt std::string

    auto obj2 = test_class_text({ .switch_pin = std::string("Lorem ipsum...") });

    takle to funguje ale netvrdim že to je nejvíc nejlepší řešení ňáký :D ;D pokud by v konstruktoru třidy 'test_class_text' nebyla ta reference tak by si to samo zavolalo konstruktor std::stringu ale takle tomu asi jako musime pomoct a vysvětlit cože po tom jakože chcem :O ;D

    btw si pleteš blog s poradnou a eště si to tady zaspamoval :O :D :D ;D

    Jendа avatar 22.10.2023 03:58 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre
    Ten duplicitní blogpost můžeš AFAIK smazat sám než tam někdo napíše komentář; pak to musí udělat admin.

    A taky prosím dej za první řádek (před první kód ideálně) <!--break-->, protože takhle kód vytekl do přehledu blokových zápisků a překáží to (barevné <pre> je tady roztažené na celou šířku a tluče se to s pravým sidebarem).
    22.10.2023 19:24 Petr
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre
    Přijde mi, že inicializace referencí na hodnotu s kratším lifetime není nejlepší nápad. Co to zkusit takto: test_class_int(const int switch_pin) : _switch_pin(switch_pin) {} ?
    Gréta avatar 22.10.2023 20:19 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre

    u čiselnejch proměnejch ten benefit předáváním referencí taky nebude ňák moc velkej, spiš zanedbatelnej :D ;D

    btw von to pak v tom konstruktoru stejně předává hodnotou (páč ty třídy si v proměný '_switch_pin' nedržej referenci ale sou to už normální proměný) nóó takže stačí by nám ta reference co se dotoho jakoby strká vydržela žít jenom po dobu volaní konstruktoru :O ;D

    skunkOS avatar 26.10.2023 09:50 skunkOS | skóre: 27 | blog: Tak nějak
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre
    U primitivních typů bude přínos reference oproti hodnotě nulovej. Je totiž jedno jestli se kopíruje "informace o referenci" (což je číslo) nebo se kopíruje samotné číslo. Buď jak buď.
    http://martinrotter.github.io
    26.10.2023 22:58 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre
    Přínos bude buď nulovej, anebo, v případě, že se to dané volání funkce nenainlajnuje, bude zápornej, protože indirekce navíc - hodnota se bude muset natáhnout z paměti.

    Porovnání.
    22.10.2023 21:19 tom
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre
    Protoze pro integer literal neexistuje adresa. Je to stejny, jako kdyby v kodu bylo int *a = &5;
    Gréta avatar 23.10.2023 00:52 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre

    nj akorátže až nato že mě se ten jeho kod (mirně dopras.. upravenej ale to dělaní s intem je jakoby uplně netknutý) podařilo zkompilovat a pustit :O :D

    #include <string>
    #include <iostream>
    
    class test_class_text
    {
    public:
        std::string _switch_pin;
    public:
        test_class_text(const std::string& switch_pin) :
            _switch_pin(switch_pin)
        {
     
        }
    
    
    };
    
    
    class test_class_int
    {
    public:
        int _switch_pin;
    public:
        test_class_int(const int& switch_pin) :
            _switch_pin(switch_pin)
        {
     
        }
    };
    
    
    int main()
    {
    auto obj = test_class_int({ .switch_pin = 5 }); 
    auto obj2 = test_class_text({ .switch_pin = std::string("Lorem ipsum...") });
    
    std::cout<<"co ma prvni vobekt: "<<obj._switch_pin<<std::endl;
    std::cout<<"co ma druhej vobekt: "<<obj2._switch_pin<<std::endl;
    
    return 0;
    }
    
    
    co ma prvni vobekt: 5
    co ma druhej vobekt: Lorem ipsum...
    
    25.10.2023 00:16 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre
    Nekorektní jsou ty příklady oba stejně, máš nejspíš neaktuální GCC. GCC v13 nevezme ani jeden, zahlásí chybějící initliazer-list konstruktor.

    Asi jsi chtěl spíš něco jako test_class_int obj2 = { .switch_pin = 5 }; ? To by ale ta třída musela být POD...
    Gréta avatar 25.10.2023 02:52 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: WTF C++ 20? Pomenované parametre

    mi to mý upravený jelo v gcc 10 s argumentem -std=c++20 ale netvrdim žeto je takle jakože dobře :O :O

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.