Zaawansowane CPP/Ćwiczenia 11: Funktory: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
Linia 13: Linia 13:


Rozszerz powyższy adapter tak, aby
Rozszerz powyższy adapter tak, aby
działa również dla jedno lub dwuargumentowych funkcji bez konieczności ich opakowywania.
działał również dla jedno lub dwuargumentowych funkcji bez konieczności ich opakowywania.
}}
}}
{{cwiczenie|4||  
{{cwiczenie|4||  

Wersja z 14:46, 12 wrz 2006

Ćwiczenie 1

Zaimplementuj adapter compose_f_gx_hy realizujący złożenie dwuargumentowe f(g(x),h(y)).

Ćwiczenie 2

Korzystając z klasy functor_traits zaimplementuj adpter bind1st który bedzie działał zarówno dla jedno i dwuargumentowych funktorów.

Ćwiczenie 3

Rozszerz powyższy adapter tak, aby działał również dla jedno lub dwuargumentowych funkcji bez konieczności ich opakowywania.

Ćwiczenie 4

Zaimplementuj funktor impelemetujący, składanie funkcji poprzez wykonywanie ich po kolei:

 macro1(f1,f2)(x)

wykonuje f1(x);f2(x);. Wartości zwracane przez te funkcje są ignorowane. Podobnie dla funkcji macro2(f1,f2), która ma zwrócić funktor dwuargumentowy.

Ćwiczenie 5

Zmodyfikuj powyższy szablon tak aby mogły być do niego przekazywane również funkcje bezargumentowe:

 int f();
void g(double);

macro1(f,g)(x);

spowdoduje wywołanie, f();g(x).