• Keine Ergebnisse gefunden

generische Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "generische Programmierung"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. Hans-Jürgen Buhl Praktische Informatik/Numerik Fachbereich C

Mathematik und Naturwissenschaften, Mathematik und Informatik

E-MAIL buhl@math.uni-wuppertal.de WWW www.math.uni-wuppertal.de/~buhl DATUM 15. Januar 2014

generische Programmierung

WS 2013/2014 – Übungsblatt 11 Ausgabe: 14. Januar 2014

Abgabe bis 22. Januar 2014 an:kheidsch@studs.math.uni-wuppertal.de

Aufgabe 1. Fibonacci-Zahlen

Testen Sie die aktuelle Version (C++11) der Metafunktionfibvon http://ideone.com/7exywB

und vergleichen Sie mit

http://stackoverflow.com/questions/908256/getting-template-metaprogramming-compile-time-constants-at-runtime. Welche Unterschiede stellen Sie fest? Warum wurden ander Sprachkonstrukte benutzt?

Aufgabe 2. EqualTypes

Testen Sie mit Hilfe des Templates

template< typename T1 , typename T2 >

st r uct EqualTypes { enum { r e s u l t = f alse } ;

} ;

template< typename T >

st r uct EqualTypes <T , T> { enum { r e s u l t = true } ;

} ;

in wieweit durch typedefs erklärte Typnamen von C++ als identisch zu ihren Ursprungstypen aufgefasst werden (bei selbstdefinierten Klassen, enum’s, ...).

Aufgabe 3. Vorbedingungen in Templates

Demonstrieren Sie die Verfahrensweisen von Abschnitt 2.7, um die Template-Metafunktion fact(Aufgabe 1 von Übungsblatt 9) vor dem Aufruf mit einem negativen Templateparameter- Wert zu schützen. Testen Sie!

Warum nennt manfactin diesem Zusammenhang eine Metafunktion und nicht einfach eine Funktion?

(2)

Aufgabe 4. Vorbedingungen in Templates: Fortsetzung

Demonstrieren Sie analog, wie Sie die Template-Metafunktion template<int n, int m>

struct cpower::resultgegen unsinnige Parameter absichern können.

Aufgabe 5. Vorbedingungen in Templates: Fortsetzung 2

Demonstrieren Sie anlog, wie Sie die Template-Metafunktiontemplate <unsigned long N> struct binary::valuegegen einen unsinnigen Parameter absichern.

Seite 2

Referenzen

ÄHNLICHE DOKUMENTE

Beschreiben Sie umgangssprachlich in eigenen Worten die einzelnen Requirements des Kon- zepts InputIterator in Library Concepts: Iterator Welche Konzepte müssen die dem Ite-

Demonstrieren Sie anlog, wie Sie die Template-Metafunktion template &lt;unsigned long N&gt; struct binary::value gegen einen unsinnigen

Demonstrieren Sie static_assert() in einem Beispielprogramm, das nur compiliert wer- den kann, wenn Ihre C++-Sprachumgebung einen 4 Byte langen int-Typ besitzt.. Benutzen Sie dabei

Demonstrieren Sie analog, wie Sie die Template-Metafunktion template&lt;int n, int m&gt; struct cpower::result gegen unsinnige Parameter absichern k¨onnen.

Demonstrieren Sie die Benutzung von static assert(), um die Template-Metafunktion template &lt;unsigned long N&gt; struct binary::value gegen einen unsinnigen Parameter

Falls S ein Supertyp von T ist, dann ist A&lt;S&gt; weder ein Subtyp von A&lt;T&gt; noch ein Supertyp.. Kovarianz, Kontravarianz und Invarianz Kovarianz, Kontravarianz

A face object is represented by the appearance of the eyes, nose and mouth, and a shape model that code how these parts can deform.. A body object is represented by the appearance of

In part 3 of the 3-D skills model the tutor encourages the student to repeat the corrected auscultation component, without prompting, but offering corrective coaching