Zaawansowane CPP/Ćwiczenia 6: Funkcje typów i inne sztuczki
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Ćwiczenie 1
Napisz szablon, który sprawdza czy jego parametr posiada typ stowarzyszony value_type, np.:
has_value_type<std::vector<int> >::yes
powinno mieć wartość true
, a
has_value_type<int>::yes
wartość false
.
Podpowiedź
Rozwiązanie
Ćwiczenie 2
Napisz szablon, który sprawdza czy jeden z jego argumentów dziedziczy z drugiego.
Podpowiedź
Rozwiązanie
Ćwiczenie 3
Napisz szablon, który sprawdza czy dany typ jest wymieniony w podanej liście typów. Np.:
in<int,TypeList<int,TypeList<double,NullType> >>::yes
jest prawdziwe, a
in<int,TypeList<char,TypeList<double,NullType> >>::yes
jest fałszywe.
Rozwiązanie
Ćwiczenie 4
Implementacja indeksowania listy typów podana na wykładzie w przypadku przekroczenia zakresu powoduje błąd kompilacji. Napisz mniej restrykcyjną wersję tego szablonu, która w takiej sytacji "zwraca" typ:
struct Empty_type {};
Rozwiązanie