Templates und Typen
-
Das sieht gut aus Meep Meep

Wollte auch gerade editieren und Trait-Klassen vorschlagen.
-
-
Mr. N schrieb:
Wir bauen uns selber eine Sandburg :p
-
Hallo,
die Variante mit der expliziten Aufzälung ist für PODs etwas schlecht, da es beliebig viele POD-Typen gibt. Dummerweise lässt sich ein is_pod<T> in Standard-C++ nicht vollständig implementieren. Um wirklich für jedes T definitiv entscheiden zu können, ob es ein POD-Typ ist oder nicht, bedarf es der Mithilfe vom Compiler.Eine sehr gut Type-Traits-Library, die alle deine gestellten Fragen beantworten kann, findest du in den boost-Libs (http://www.boost.org/doc/html/boost_typetraits.html).
-
Und was is mit const, volatile und const volatile Zeigern?

template< typename T > struct is_pointer< T* const > { enum { value = true }; }; template< typename T > struct is_pointer< T* volatile > { enum { value = true }; }; template< typename T > struct is_pointer< T* const volatile > { enum { value = true }; };Microsoft bietet übrigens einige Typetrait funktionen an, z.B. __is_pod(): http://msdn2.microsoft.com/en-us/library/ms177194(VS.80).aspx
Achja, wo wir grad beim sammeln sind!

template< typename T1, typename T2 > struct is_same { enum { value = false }; }; template< typename T > struct is_same< T, T > { enum { value = true }; };
-
Gibt es irgendeinen Grund, dass ihr alle noch den 'enum'-Hack verwendet, um den Wert zu definieren? Was spricht bei heutigen Compilern gegen folgenden Code?
template <typename T> struct is_… { static bool const value = false; };
-
Garnichts, aber was spricht gegen den enum-hack?

-
David_pb schrieb:
Garnichts, aber was spricht gegen den enum-hack?

- Er sieht "hässlich" aus
- Er versteckt die wahre Semantik des Codes
- Er verwendet einen falschen Typ (enum/int) statt bool
- Er braucht zusätzliche geschweifte Klammern, die man auf einer deutschen PC-Tastatur schlecht erreicht (interessiert mich nicht, ich verwende nen Mac)
Keine schwerwiegenden Gründe (bis auf den zweiten Punkt), aber doch alles in allem Gründe genug für mich.
-
HumeSikkins schrieb:
Hallo,
die Variante mit der expliziten Aufzälung ist für PODs etwas schlecht, da es beliebig viele POD-Typen gibt. Dummerweise lässt sich ein is_pod<T> in Standard-C++ nicht vollständig implementieren.werden dann klassen und strukturen die aus reinen pods bestehen auch als pod gewerted ? oder wie ist das zu verstehen ?
Meep Meep
-
Naja, die Punkte 1 und 4 find ich nich soo überzeugend, aber 2 und 3 haben was!

Meep Meep schrieb:
HumeSikkins schrieb:
Hallo,
die Variante mit der expliziten Aufzälung ist für PODs etwas schlecht, da es beliebig viele POD-Typen gibt. Dummerweise lässt sich ein is_pod<T> in Standard-C++ nicht vollständig implementieren.werden dann klassen und strukturen die aus reinen pods bestehen auch als pod gewerted ? oder wie ist das zu verstehen ?
Meep Meep
Ja. Siehe: http://www.parashift.com/c++-faq-lite/intrinsic-types.html#faq-26.7