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í
×
    včera 19:44 | IT novinky

    Samsung na akci Galaxy Unpacked July 2026 (YouTube) představil své nové telefony Galaxy Z Fold8 Ultra, Fold8 a Flip8, hodinky Galaxy Watch Ultra2 a Watch9 a chytré brýle ve spolupráci s Gentle Monster a Warby Parker.

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

    Po pěti letech vývoje vyšla česká počítačová hra Scarlet Deer Inn (ProtonDB). Scarlet Deer Inn je vyšívaná temná středověká pohádka. Zatímco život ve zdánlivě obyčejné vesnici se točí kolem běžných povinností a sousedských drbů, v podzemí se skrývají zlověstná tajemství.

    Ladislav Hagara | Komentářů: 1
    včera 13:33 | IT novinky

    Představen byl Raspberry Pi Touch Display 2 s uhlopříčkou 10 palců a rozlišením 1200 × 1920 pixelů. Cena je 80 dolarů.

    Ladislav Hagara | Komentářů: 1
    včera 13:22 | Komunita

    RPCS3 (Wikipedie), tj. open source emulátor Sony PlayStation 3, snížil minimální požadavky. Nově jsou podporovány starší grafické karty ATI Radeon řady HD 2000, 3000 a 4000 z let 2007 až 2009. Na PC běží už 75 % všech her pro PlayStation 3. V budoucnu bude RPCS3 fungovat bez firmwaru z PS3. V RPCS3 byl implementován systémový modul cellSysmodule (𝕏).

    Ladislav Hagara | Komentářů: 0
    včera 11:00 | Zajímavý software

    Vyšel open-source nástroj winetop (MIT) — nativní CLI/TUI pro sledování a ukončování Wine, Proton, Lutris, Heroic a Bottles sezení. Seskupuje procesy podle WINEPREFIX / Steam AppId, umí bezpečně zabít jen hru (včetně Steam reaperu) a nabízí i skriptovatelné příkazy (list, kill, orphans, …). Balíčky jsou mimo jiné na crates.io, Copru (dnf copr enable kovariadam/winetop), PPA ppa:kovariadam/winetop a AUR (winetop-bin).

    kovariadam | Komentářů: 0
    včera 02:44 | IT novinky

    Ve spolupráci společností OpenAI a Work Louder byla představena (𝕏) hardwarová klávesnice Codex Micro pro práci s AI agenty. Cena klávesnice je 230 dolarů.

    Ladislav Hagara | Komentářů: 1
    21.7. 20:00 | Nová verze

    Byl vydán Mozilla Firefox 153.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 153 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    21.7. 13:44 | Bezpečnostní upozornění Ladislav Hagara | Komentářů: 11
    21.7. 13:11 | Nová verze

    Byla vydána nová verze 5.44 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 71 vývojářů. Změněno bylo přibližně 270 tisíc řádků v 1 300 souborech. Přehled novinek a změn v podrobném seznamu.

    Ladislav Hagara | Komentářů: 0
    21.7. 12:33 | Pozvánky

    Na 23. září 2026 je do bratislavské Nové Cvernovky naplánovaná jednodenní konference #nobullshit.camp pro tech leadery, DevOps a platform inženýry. Mají tu zaznít upřímné příběhy z praxe o tom, co v produkčních systémech reálně fungovalo, co se pokazilo a co si z toho lidé odnesli. Témata pokrývají tři oblasti – DevOps a platformy (Kubernetes, cloud, provoz systémů), firemní kulturu a leadership. Program běží ve dvou formátech: hlavní

    … více »
    alian | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (24%)
    Celkem 2205 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: 3 otázky na C++

    10.10.2020 15:37 Naples
    3 otázky na C++
    Přečteno: 598×
    1. Možno to niekomu príde ako hnidopišské otázky, ale imho prvá je dôležitá pre pochopenie základných princípov.
    template<typename T>
    void foo(const T something)
    {
        // akého typu bude T
    }
    zavolám funkciu takto:
    auto my = "xyz"; // my je typu const char*
    foo(my);
    
    Premená my je typu const char*, lenže pred typom funkcie už const je, const pred argumentom znamená že hodnota argumentu sa nedá modifikovať. lenže const char* je aj samostatný typ, (nekompatibilný s char*) Aký typ bude mať parameter T?

    char*? alebo const char*;

    A je zápis void foo(const const char* something) ekvivalentný k void foo(const char* something)?

    2. ako v static_asserte vypíšem aktuálny názov typu priradený do template parametra? Príklad:
    #define requires_some_type(Type) \
        static_assert(std::is_same_v<Type, some_type>, __FUNCTION__ ": The parameter '" #Type "' was expected to have type 'some_type', but here has type '" (sem niečo patrí) "'");
    3. Dajme tomu že chcem niečo testovať takto:
    if constexpr (vyraz) 
    {
        // nejaky kod
    }
    else
    {
        static_assert(false, "Some message");
    }
    a v else vetve chcem vypísať chybovú, hlášku ktorá sa zobrazí v compile time. Neexistuje nejaká náhrada za static assert ktorá vypíše len chybovú hlášku bez potreby testovania výrazu?

    Odpovědi

    10.10.2020 15:42 hitler
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    Ad 1, první odkaz na googlu (rozbil se ti?):

    [C++11: 14.1/4]: A non-type template-parameter shall have one of the following (optionally cv-qualified) types:

    integral or enumeration type,

    pointer to object or pointer to function,

    lvalue reference to object or lvalue reference to function,

    pointer to member,

    std::nullptr_t.

    [C++11: 14.1/5]: The top-level cv-qualifiers on the template-parameter are ignored when determining its type.
    MakeIranBombedAgain❗ avatar 10.10.2020 16:30 MakeIranBombedAgain❗ | skóre: 42 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: 3 otázky na C++

    použít typeindex a typeinfo by asi jako možná šlo hele :O :O

    #include <iostream>
    #include <typeindex> 
    #include <typeinfo> 
         
    template<typename T> void test(T typ)
    {
        std::type_index index(typeid(typ));
        std::cout << index.name() << std::endl;
    }
    
    int main() 
    { 
        int cislo = 123;
        std::string str = "venku hrozne prsi tedko :O :O";
        const char * cchar = "a uvnitr taky protoze vitr sebral strechu :O :O :O :O";
    
        test(cislo);
        test(str);
        test(cchar);
    
        return 0; 
    } 
    

    noa jestli si fortrane ;D ;D přešel nato gcc tak nám to vrací ty typy v mangled formě :O :/

    v linuxu to de vodmanglovat nástroječkem co se menuje c++filt hele takle ty data typy

    c++filt -t PKc
    

    a vrátit by to mělo const char *

    10.10.2020 17:43 DETEKTIVCOLOMBOS.R.O.
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    Morava.
    11.10.2020 11:52 Naples
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    Ďakujem Grétuška, ale toto nejde v compile-time, pri staic_assert-e (ktorý generuje chybové hlášky počas kompilácie). Tvoje riešenie je skvelé pri runtime ale ja by som potreboval niečo obdobné pre compile-time.
    10.10.2020 18:20 10minuteman
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    T neni "nejakeho typu", T je typ. V tvem prikladu je to const char *.

    Jakeho typu je something? Typu const T.

    const char * znamena ukazatel na const char - tedy const je ten char uvnitr, ne pointer.

    const T znamena konstantni typ T, takze to vyjde:

    const char * const tedy konstantni ukazatel na konstantni char.

    Kdybys pouzival east-const, tak je to jasne videt: (char const *) + (T const) = (char const * const)

    11.10.2020 11:32 Naples
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    Ahá super dík. Za info. V tom prvom bode mám už jasno.
    12.10.2020 09:11 doon
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    ad 3: to jsem teď nedávno taky řešil

    definuješ si pomocný výraz:
    template<typename T>
    constexpr bool always_false = false;
    
    a pak použiješ v else větvi:
    static_assert(always_false<T>, "Some message")
    
    12.10.2020 09:49 MadCatX | skóre: 28 | blog: dev_urandom
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    1. V čem je tohle lepší než static_assert(false, "Assertion failed");?
    2. V jakém případě má smysl dávat do else větve if constexpr podmínky vždy nesplněný assert? Není jednodušší tu podmínku nacpat přímo do static_assertu? Výsledný kód bude přehlednější a navíc půjde přeložit i na překladačích, co ještě neznají constexpr podmínky.
    MakeIranBombedAgain❗ avatar 12.10.2020 13:46 MakeIranBombedAgain❗ | skóre: 42 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: 3 otázky na C++

    V čem je tohle lepší než static_assert(false, "Assertion failed");?

    asi to jakoby fakt bude správná vodpověď natu trojku protože todleto fakt umí v template funkci vypsat datovej typ narozdíl vod static_assert(false,"blah") :O :O :D ;D

    template<typename T>
    constexpr bool always_false = false;
    
    template <typename T> void test(T blah)
    {
        static_assert(false, "venku vuuuubec neprsi");
        static_assert(always_false<T>, "protoze greta neni z moravy :D ;D");
    }
    
    int main()
    {
        test(10.0);
        return 0;
    }
    
    
    

    noa g++ nám zanadává v druhým assertu v hranatejch závorkách jakej to byl jako typename vtý šabloně strčenej :O :O :O :O

    assertovani.cpp: In function ‘void test(T)’:
    assertovani.cpp:6:15: error: static assertion failed: venku vuuuubec neprsi
        6 | static_assert(false, "venku vuuuubec neprsi");
          |               ^~~~~
    assertovani.cpp: In instantiation of ‘void test(T) [with T = double]’:
    assertovani.cpp:12:10:   required from here
    assertovani.cpp:7:15: error: static assertion failed: protoze greta neni z moravy :D ;D
        7 | static_assert(always_false<T>, "protoze greta neni z moravy :D ;D");
          |               ^~~~~~~~~~~~~~~
    
    

    možná je nějaký víc elegantnější řešení jak tam to T jakoby nějak strčit dotoho assertu ale nevim :O :O

    12.10.2020 14:59 MadCatX | skóre: 28 | blog: dev_urandom
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    Tohle bude záležet na kompilátoru. Např. pořád dost používané MSVC14 tenhle konstrukt vůbec nepřeloží. Navíc kdyby tu podmínku měl rovnou v tom assertu, dostane úplně totéž chování bez zbytečného zanoření. Ne že by compile-time if byl k ničemu ale v tomhle případě mi jeho použití přijde nevhodné.
    12.10.2020 23:35 doon
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    static_assert(false) v constexpr ifu nefunguje

    ten pomocný výraz to vyhodnocení "odloží" - je to hack a constexpr if by měl být asi chytřejší, ale bohužel...

    já jsem to použil následovně:
    // enum class Policy {};
    // template<Policy T>
    
    if constexpr (T == Policy::Random) {
        // kúštěk kódu
    } else if constexpr (T == Policy::FIFO) {
        // kúštěk kódu
    } else {
        static_assert(always_false<T>, "Using unimplemented Policy");
    }
    
    neříkám, že to nejde udělat jinak, ale static_assert dává mnohem hezčí chybové hlášky

    btw. (ne)pěkně to c++ bobtná
    13.10.2020 01:21 MadCatX
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    Jo jo, máš pravdu. Uvědomil jsem si to, až když jsem si s tím chvíli hrál. Podmínka static_assertu musí záviset na šablonovém parametru, aby se vyhodnotila "selektivně".
    13.10.2020 13:18 frr | skóre: 34
    Rozbalit Rozbalit vše Re: 3 otázky na C++
    ...po dvaceti letech spánku mi spadl na hlavu kokosový ořech, což mě vzbudilo a rozespale mžourám na to zadání... ad 3: "at compile time" mi evokuje pradávná makra jako #if #error #warning #else #endif [1|2] plus mě šimrá v lebce typeof/typeid . Ale mám neblahé podezření, že prvně uvedená klasická #makra se expandují ještě dřív, než se kompilátor pustí do instanciace šablon<>... takže bych měl asi zalézt a spát dál, protože to není odpověď na původní dotaz...
    [:wq]

    Založit nové vláknoNahoru

    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.