Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 15.0.0. Přehled novinek v příspěvku na blogu společnosti Collabora. Vypíchnout lze Lua shell umožňující psát správu oken v jazyce Lua.
Organizace Apache Software Foundation (ASF) vydala verzi 29 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Ústavní soud na svých webových stránkách i v databázi NALUS (NÁLezy a USnesení Ústavního soudu) představil novou verzi chatbota využívajícího umělou inteligenci. Jeho posláním je usnadnit veřejnosti orientaci v rozsáhlé judikatuře Ústavního soudu a pomoci jí s vyhledáváním informací i na webových stránkách soudu, a to i v jiných jazycích. Jde o první nasazení umělé inteligence v rámci webových stránek a databází judikatury českých soudů.
Byla vydána nová verze 10.1 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnuta je podpora NanoPi Zero2 a balíček WhoDB.
Konference Otvorený softvér vo vzdelávaní, výskume a v IT riešeniach OSSConf 2026 proběhne od 1. do 3. července 2026 na Žilinské univerzita v Žilině: "Cieľom našej konferencie je poskytnúť priestor pre informovanie o novinkách vo vývoji otvoreného softvéru a otvorených technológií, o možnostiach využitia týchto nástrojov vo vede a vzdelávaní a taktiež poskytnúť priestor pre neformálne priateľské stretnutie užívateľov a priaznivcov
… více »Korespondenční seminář z programování (KSP) pražského Matfyzu pořádá i letos jarní soustředění pro začátečníky. Zváni jsou všichni středoškoláci a starší základoškoláci, kteří se chtějí naučit programovat, lépe uvažovat o informatických úlohách a poznat nové podobně smýšlející kamarády. Úplným začátečníkům bude určen kurz základů programování a kurz základních algoritmických dovedností, pokročilejším nabídneme různorodé
… více »Fedora je od 10. února dostupná v Sýrii. Sýrie vypadla ze seznamu embargovaných zemí a Fedora Infrastructure Team mohl odblokovat syrské IP adresy.
Ministerstvo zahraničí Spojených států amerických vyvíjí online portál Freedom.gov, který umožní nejenom uživatelům v Evropě přístup k obsahu blokovanému jejich vládami. Portál bude patrně obsahovat VPN funkci maskující uživatelský provoz tak, aby se jevil jako pocházející z USA. Projekt měl být původně představen již na letošní Mnichovské bezpečnostní konferenci, ale jeho spuštění bylo odloženo.
Byla vydána pro lidi zdarma ke stažení kniha The Book of Remind věnovaná sofistikovanému kalendáři a připomínači Remind.
Grafický editor dokumentů LyX, založený na TeXu, byl vydán ve verzi 2.5.0. Oznámení připomíná 30. výročí vzniku projektu. Novinky zahrnují mj. vylepšení referencí nebo použití barev napříč aplikací, od rozhraní editoru po výstupní dokument.
std::function<void (EraseResult)> OnEraseDone;
std::thread eraseDisc(bool quick, OnEraseDone callback)
{
std::thread th(std::bind(&Device::_eraseThread, this, callback));
return std::move(th);
}
void _eraseThread(OnEraseDone callback)
{
// blabla
}
Callbacky mi tak hezky fungovaly, ale jen do té doby, než jsem místo obyčejné funkce jako callback chtěl použít pointer na metodu:
// v metodě objektu typu Test std::thread th = eraseDisc(true, OnEraseDone(&Test::eraseDone, this));Kompilátor nahlásí slušnou 100 řádkovou chybu, ze které se zdá, že takový konstruktor std::function nemá a std::bind mi taky nepomůže. Otázkou tedy je, co použít místo std::function (GCC 4.4 ještě neumí lambda funkce, tak ty taky ne, boost knihovnu taky nee), nebo poradit, co dělám špatně.
Řešení dotazu:
std::mem_fn, Jardiku!
bind (nějak takhle):
eraseDisc(true, boost::bind(&Objekt::metoda, this));
Skoro jistě (nechce se mi to zjišťovat) je to v C++0x taky (asi se to bude jmenovat std::bind), najdi si to.
Nebo můžeš bejt frikulín, a jít do lambdy (bez záruky jak na syntax, tak na funkčnost v nějakým kompilátoru):
eraseDisc(true, []{ this->metoda(); } );
Na std::function je konvertovatelný buď func-pointer, nebo funktor.
Tahleta dnesni mladez ...
std::bind(std::mem_fn(&Test::eraseDone), this)
std::function<void (EraseResult)>
Jo aha, vy tam mate jeste jeden volnej parametr... s vama je teda prace!
#include <functional>
#include <string>
#include <iostream>
struct test
{
void run(const std::string& message)
{
std::cout << message << "\n";
}
};
int main(int argc, char** argv)
{
using namespace std::placeholders;
test t;
std::function<void (const std::string&)> f = std::bind(&test::run, &t, _1);
f("Hola hola");
}
(Mate recht, jde to i bez std::mem_fn, musim se podivat, proc mne to bez nej kdysi neslo...)
std::bind(&Test::eraseDone, this, std::placeholders::_1)
Děkuju.
Kompilator musi pripravit kod, kterej za behu rozhodne jestli je metoda virtualni nebo ne, jestli nahodou neni zdedena od virtualniho predka a pod.Nikoliv, kompilátor nic takového dělat nemusí. Ani nemůže, protože za běhu v programu taková informace prostě není (ledaže by si ji tam ten implementátor speciálně kvůli tomuhle přidal, ale v takovém případě je pochybné mluvit o tom jako o opruzu - implementátor si za ten opruz může sám, a to i v případě, kdy chce dodržet nějaké ABI). Pokud jde o ukazatele na metodu, je situace celkem jednoduchá - asi nejjednodušší implementace je dvojice
(pointer na funkci, offset pro this) s tím, že pro volání virtuální funkce ap. kompilátor vygeneruje kód
Ret synthesized_thunk(T* that, Args... args) {
that->real_function(args);
}
a tuhle funkci použije do toho PMF.
zabira member pointer 6-12B na 32bit platformachTo není vůbec k divení, takových věcí je víc.
Je to jedna z nejtezsich veci pro impementatory C++ kompilatoruImplementoval ten váš expert RTTI? Výjimky? Linker? To jsou všechno věci těžší, anebo pracnější, a zcela určitě jejich datové struktury zabírají víc, než pouhých 12 B.
Ja jsem si z toho vzal ponauceni ze nikdy member pointer pouzivat nebuduUniká mi logika tohohle kroku. I když to nebudete používat, implementovat se to bude pořád stejně (těžce nebo lehce, to je jedno).
ze mi staci trida command s metorou run.... čímž se ochudíte o jakýkoli generický kód, který spolupracuje s funktory. Disclaimer: Tento příspěvek rozhodně nemá vyvolat dojem, že PMF by se měly používat nějak masově. IMHO jsou PMF v C++ jedním z reliktů C (v tomto případě ukazatelů na funkce) a jejich použití přináší např. výkonnostní problémy, na druhou stranu není jednoduché a nepodporuje znovupoužitelnost kódu.
Tiskni
Sdílej: