Prawdopodobnie słyszałeś o lvalue oraz rvalue. W czasach panowania C oraz C++ (przed standardem C++ 11) były one dość łatwe do rozróżnienia - lvalue, to były te wyrażenia, które mogły znajdować się po lewej stronie przypisania, a rvalue to cała reszta. Od C++11 podział na wyrażenia stał się nieco bardziej skomplikowany. Poza znanymi l- i r-value mamy także gl-, x- oraz p-rvalue. W tym poście, chciałbym się przyjrzeć temu podziałowi nieco bardziej.... więcej
Wyrażenia lambda są jednym z najpotężniejszych dodatków do C++11, które w dodatku ewoluują z każdą nową wersją Standardu C++. W tym wpisie przejdziemy przez ich historę, pokazując kluczową funkcję nowoczesnego C++.... więcej
Standard C++17 składa się z prawie tysiąca stron A4. Prawie tysiąc stron, omawiających najciemniejsze zakamarki języka. Wszelkiego rodzaju niuanse, wyjątki i rzeczy, którymi na co dzień nie warto się przejmować. Spróbujemy przyjrzeć się kilku takim przypadkom, których miejmy nadzieję nigdy nie spotkamy w praktyce.... więcej
Tuż po przetworzeniu plików źródłowych przez preprocesor, efekt jego pracy trafia bezpośrednio do kompilatora, gdzie zostaje poddany procesowi kompilacji. Proces ten, mimo że w głowach wielu osób wydaje się być bardzo skomplikowanym, może zostać zamknięty w łatwą do zrozumienia abstrakcję. Zapraszam na wpis, który wyjaśni na czym dokładnie polega ten proces.... więcej
Wraz z C++17 dostajemy potężny zestaw typów i funkcji do pracy z systemem plików. O ile wcześniej mogliśmy tworzyć pliki, zapisywać odczytywać z nich dane, to teraz mamy dostęp do tworzenia katalogów, iterowania po nich, obsłudze atrybutów i wielu innych zaawansowanych mechanizmów. W artykule zajmiemy się prostym zadaniem: jak odczytać rozmiar pliku.... więcej
W moich poprzednich wpisach w serii C++ STL poruszyłem tematy związane z tym, jak używać std::optional. Ten opakowujący (nazywany również słownikowym) typ jest użyteczny zawsze wtedy, kiedy potrzebujemy wyrazić coś, co może nie posiadać stanu: coś co może być "puste". Na przykład możemy zwrócić std::nullopt aby poinformować, że że mamy do czynienia z błędem... ale czy aby na pewno to jest najlepszy wybór?... więcej