Ich versuchte, meine Speicherausrichtung typedef kam ich mit dem folgenden Konstrukt (das ist immer noch ein bisschen Arbeit in Arbeit, weil ich korrigieren muss die GNU-Version):Vorlage Fehler: Untyp ".. [mit T = T] ist kein Typ Name"
#if defined(__GNUG__)
template <typename T>
struct sfo_type {
typedef T* restrict __attribute__((aligned(32))) aptr32;
};
#elif defined(__INTEL_COMPILER)
template <typename T>
struct sfo_type {
typedef T* restrict __attribute__((aligned(32))) aptr32;
};
#endif
und dann versuche ich es so zu verwenden:
template<typename T>
class tsfo_vector {
private:
sfo_type<T>::aptr32 m_data;
int m_size;
...
aber dann bekomme ich folgende Fehlermeldung:
/Users/bravegag/code/fastcode_project/code/src/sfo_vector.h(43): error: nontype "sfo_type<T>::aptr32 [with T=T]" is not a type name
sfo_type<T>::aptr32 m_data;
^
Kann mir jemand sagen, was hier nicht stimmt?
Nizza sehen, danke! Ich bin wirklich verwirrt von diesem ... Wie kommt es, dass ein Datenelement einen typedef Marker zum Kompilieren haben muss? es ist ein bisschen komisch. –
@GiovanniAzua, erklärt die Antwort die Verwendung von 'typename' viel besser, als ich könnte. – hmjd
@GiovanniAzua: Nicht das Datenelement, aber sein Typ hat das Präfix 'typedef'. – celtschk