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