Wynika to z faktu, że w momencie pierwszego wywołania is_base_of klasa D nie została jeszcze zdefiniowana. W takim przypadku poprawka polega na tym, aby nie używać takich cech typu do momentu zdefiniowania klasy. Jeśli przeniesiesz definicje B i D na początek plik...