Być może, wydaje Ci się, że temat tego postu jest bardzo podstawowy i nie warto poświęcać na niego czasu. Częściowo jest to prawda - treść dotyczy podstaw języka C++ - jestem jednak pewien, że znajdziesz tu czytelniku rzeczy, które będą dla Ciebie zupełnie nowe, a także dowiesz się o wielu niezdefiniowanych zachowaniach. Zapraszam do lektury!... więcej
Jak zapewne wiecie, istnieją pewne mechanizmy w C++, które pozwalają na uzyskanie danych o typie obiektu w czasie życia programu. Być może zastanawiacie się po co są one w C++. Dzięki nim możemy np. obsługiwać wyjątki oraz implementować typy takie jak `std::any`. W tym artykule przyjrzymy się narzędziom dynamicznego rzutowania oraz uzyskiwania informacji o dynamicznym typie zmiennej.... więcej
W ostatnim artykule dotyczącym kategorii typów powiedzieliśmy sobie o podziale wyrażeń, oraz o tym, czym są kategorie wartości. Nie wspomnieliśmy jednak, co się dzieje, kiedy wyrażenie danej kategorii pojawi się w miejscu gdzie oczekiwane jest wyrażenie innej kategorii. Ten artykuł ma na celu wyjaśnienie właśnie zasad konwersji wyrażeń oraz tego, jakie operacje program musi przeprowadzić, aby te konwersje mogły się odbyć.... więcej
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