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 15:11 | Nová verze

    Vývojáři desktopového prostředí Enlightenment (Wikipedie) a souvisejících knihoven Enlightenment Foundation Libraries (EFL) vydali nové verze. Enlightenment byl vydán ve verzi 0.28.0 a Enlightenment Foundation Libraries ve verzi 1.29.

    Ladislav Hagara | Komentářů: 3
    dnes 13:55 | Zajímavý článek

    Cloudflare zjistil, že některé odpovědi modelu GLM-5.3 obsahovaly části dat z předchozích požadavků jiných zákazníků. Příčinou byla kombinace chybné konfigurace a chyby v inference enginu SGLang. Model podporoval kontextové okno 1 048 576 tokenů, ale GPU KV cache pool měl kapacitu pouze 681 280 tokenů. Při překročení kapacity docházelo k nesprávnému zpracování odmítnutého požadavku. Decode část systému následně pracovala se starými

    … více »
    vencour | Komentářů: 0
    dnes 13:00 | Zajímavý článek

    Vývojáři Knot Resolver vysvětlují, jak změnili rozhodování o tom, které DNS záznamy ponechat v cache a které odstranit. Článek obsahuje skutečná měření: devět hodin DNS provozu při 2 000 QPS, srovnání cache o velikosti 25 MB a 40 GB a také porovnání s BIND 9, kromě algoritmů obsahuje konkrétní doporučení pro konfiguraci a diagnostiku.

    vencour | Komentářů: 0
    včera 13:44 | IT novinky

    Největší kryptoměnová burza světa Binance se stala terčem útoku, při kterém podvodníci odcizili během několika minut kryptoměny v hodnotě přibližně 6,3 miliardy dolarů. Jedná se o největší kryptoměnovou krádež v historii, přibližně čtyřikrát větší než loňský útok na burzu Bybit. Binance se podařilo ve spolupráci s partnery zmrazit aspoň aktiva v hodnotě zhruba 3 miliard dolarů a slíbila, že veškeré ztráty pokryje z vlastních prostředků.

    Ladislav Hagara | Komentářů: 16
    včera 02:16 | Bezpečnostní upozornění

    Zranitelnost CVE-2026-98432 s CVSS 9.8 odhalila AI od společnosti Anthropic. Jedná se o kritickou chybu v implementaci MPTCP (multipath TCP). Debian vydal patche 16.10. a 22.10., ale např. Ubuntu je zatím bez opravy. Více informací na The Hacker News.

    Max | Komentářů: 20
    29.10. 23:22 | Zajímavý software

    Na Slovensku vznikla úplne nová rally hra, ktorá je zadarmo a funguje vo Windowse, Linuxe či na Macu. Greenie Rally má viac ako 50 tratí a vozidiel, šampionáty či turnaje. Má retro feeling a imituje automobilové hry z prelomu tisícročí. Vyskúšate prejsť všetky mapy na Škode 130RS?

    Stanislav Hoferek | Komentářů: 7
    29.10. 14:33 | Komunita

    Do základního systému NetBSD -current byl přidán nový editor atto jako alternativa k editorům vi a xedit.

    Ladislav Hagara | Komentářů: 1
    29.10. 14:11 | IT novinky

    Společnost System76 představila kompaktní 11litrový Thelio Prime Desktop. S procesorem AMD Ryzen 9000. S Pop!_OS 24.04 LTS s desktopovým prostředím COSMIC nebo Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 0
    29.10. 13:44 | Humor

    Čínská státní televize pozastavila vysílání španělské La Ligy a čínské internetové platformy omezily obsah s Kylianem Mbappém poté, co slavný fotbalista ve francouzském pořadu The Bridge mluvil o svém oblíbeném memu, v němž je jeho tvář vložena do portrétu zobrazujícího diktátora Mao Ce-tunga. 'Můj oblíbený mem je ten, na kterém dali můj obličej na čínského diktátora. To mě opravdu rozesmívá. S přáteli ho používám pořád' řekl,

    … více »
    Pendrekama do nich❗ | Komentářů: 16
    29.10. 13:22 | IT novinky

    Při příležitosti oslav Dne vzniku samostatného československého státu (28. října) byly uděleny medaile Za zásluhy tvůrci aplikace Záchranka Filipu Maleňákovi, vědci v oblasti umělé inteligence Tomáši Mikolovovi a Olze Štěpánkové, vědkyni zabývající se kybernetikou, robotikou a strojovým učením, průkopnici v oblastech výuky a využití umělé inteligence v medicínském inženýrství.

    Pendrekama do nich❗ | Komentářů: 8
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (29%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2954 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

    Dotaz: [c++2a] Aggregate initialization

    hermes avatar 4.10.2021 17:47 hermes | skóre: 7 | blog: Elektro | BA
    [c++2a] Aggregate initialization
    Přečteno: 562×
    Ahojte, občas používam anemické objekty (alebo čo to je) ako prepravky... (Napríklad keď si robím restové API a deserializujem JSONy, ktoré potom ukladám do DB.) Problém je, že C++ štandard je veľmi striktný, atribúty musím pri inicializácii zadať v rovnakom poradí, ako som ich deklaroval v triede a nemôžem ich vynechať. Prečo to tak je? A dá sa to nejako obísť? Nejakým parametrom compilera (GCC), alebo nejakým iným zápisom? Niečo sa mi marí, že v čistom (novom) C som raz videl aj iný spôsob zápisu (tuším každá propsa spolu s hodnotou bola obalená ešte v jednom páre zložených zátvoriek), ale ten v C++ nefunguje. Má to teda nejaké riešenie?
    struct Entity
    {
        int prop1;
        int prop2;
        int prop3;
    };
    
    auto entity = Entity{ .prop1 = 1, .prop2 = 2, .prop3 = 3 };

    Řešení dotazu:


    Odpovědi

    Řešení 1× (Bhezret)
    4.10.2021 18:23 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization

    Možná to chce udělat krok zpátky a podrobněji popsat, jaký problém řešíš, a zejména proč je pro řešení toho problému tak důležité proměnlivé pořadí členů ve třídě a proč se nedá najít v C++ taková reprezentace, která to pořadí bude mít „správně“.

    Nedá se zkrátka pořadí členů permutovat tak, aby mu obvyklý způsob inicializace odpovídal?

    Pokud to nejde a někteří členové nemusí být k dispozici, dá se použít std::optional (pro přímé zapouzdření) nebo std::unique_ptr (pro „zapouzdření“ à la Java)?

    Pokud se pořadí některých členů musí fakt libovolně náhodně lišit (proč?), pomohl by třeba std::variant nebo dynamický kontejner nebo kombinace obojího?

    Nedá se to rozdělit na víc různých typů? Nepomohla by dědičnost a mít to, co je vždy k dispozici, ve společném rodiči? (Což je opět stejná otázka jako „je možná permutace taková, že…“.)

    hermes avatar 4.10.2021 23:31 hermes | skóre: 7 | blog: Elektro | BA
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization
    Prečo to potrebujem? Je za tým viac dôvodov. Občas to pomôže sprehľadniť kód. V iných jazykoch sú plain objekty mocná zbraň... V JS / TSku sa dajú plain objecty používajú napríklad ako náhrada za pomenované parametre. Ale je za tým aj to vynechávanie. Keby to bolo o niečo málo flexibilnejšie, malo by to viac use cases.
    5.10.2021 03:14 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization

    Pokud to má být extrémní flexibilita bez ohledu na efektivitu, třeba je to případ pro std::unordered_map<std::string, std::variant<Spousta, Různých, Variant, ...>>. I když, pro ještě větší podobnost JavaScriptu by ten klíč měl být asi std::variant<Nějaké, Skalární, Typy, ...> místo std::string.

    Jenže: Proč dělat z C++ JavaScript? Určitě se ten nápad dá v C++ vyjádřit líp a „idiomaticky“. Pokud ne, třeba je lepší to nechat v JavaScriptu.

    Pendrekama do nich❗ avatar 4.10.2021 21:27 Pendrekama do nich❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization

    co jakoby takle uplně jednoduše :D

    struct Entity
    {
        int a, b, c;
    };
    
    int main()
    {
        
        Entity hermes;
        hermes.c=1;
        hermes.b=2;
        hermes.a=3;
        
        return 0;
    }
    
    hermes avatar 4.10.2021 23:32 hermes | skóre: 7 | blog: Elektro | BA
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization
    No len nevýhoda je, že to už neni inicializácia, ale priraďovanie, veľakrát je to skoro jedno, ale keby tam bol napr. const tak by to nefungovalo. Okrem toho v niektorých situáciách sa snažím preferovať immutablitu a teda inicializáciu pred priraďovaním.
    5.10.2021 03:03 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization

    Ale const tam můžeš mít taky, kdybys setsakra moc chtěl. Stačí, aby ta třída měla (implicitně nebo explicitně) &&-konstruktor.

    const Entity hermes{[] {
      Entity result;
      result.c = 1;
      result.b = 2;
      result.a = 3;
      return result;
    }()};
    

    Jenom bych se vsadil, že se ty typy dají uspořádat (a spořádaně konstruktory inicializovat) mnohem líp než takhle.

    5.10.2021 03:06 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization

    Mám ještě dojem, že kolem toho volání lambdy musí být extra závorky nebo tak něco. Kompilátor napoví. Ale to už jsou jenom technikálie (vzor: fekálie); princip zůstává.

    Řešení 1× (Pendrekama do nich❗)
    5.10.2021 09:45 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization
    atribúty musím pri inicializácii zadať v rovnakom poradí, ako som ich deklaroval v triede a nemôžem ich vynechať

    g++ od verze 8 sice trvá na zachování pořadí, ale už lze inicializátory vynechávat (příslušný člen je pak null initialized jako v C).

    Niečo sa mi marí, že v čistom (novom) C som raz videl aj iný spôsob zápisu (tuším každá propsa spolu s hodnotou bola obalená ešte v jednom páre zložených zátvoriek)

    Nic tak komplikovaného, prostě jen místo anonymních inicializátorů použijete pojmenované. Funguje to už od C90:

    #include <stdio.h>
    
    struct entity {
            int     prop1;
            int     prop2;
            int     prop3;
    };
    
    int main()
    {
            struct entity e = {
                    .prop3  = 3,
                    .prop1  = 1,
            };
    
            printf("prop1=%d, prop2=%d, prop3=%d\n", e.prop1, e.prop2, e.prop3);
    
            return 0;
    }
    
    mike@lion:/tmp/test> gcc-12 --std=c90 -Wall -Wextra -o x x.c
    mike@lion:/tmp/test> ./x
    prop1=1, prop2=0, prop3=3
    

    Třicet let standardizovaná featura mi nepřijde až tak horká novinka. :-)

    5.10.2021 09:59 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization
    Vnořené složené závorky jste možná mohl vidět, pokud se inicializovalo např. pole struktur nebo vnořené struktury.
    6.10.2021 10:41 luky
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization
    Prekladejte to C prekladacem a prilinkujte si to k C++ aplikaci.
    6.10.2021 20:41 Jardík
    Rozbalit Rozbalit vše Re: [c++2a] Aggregate initialization
    Tady např. vysvětlují důvod.

    Podělaný semafory.

    Založit nové vlákno • Nahoru

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

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