8
Bellek hizalamamı yazmaya çalışıyorum Aşağıdaki yapıyla çıktım (hala biraz ilerlemem gerekiyor, çünkü düzeltmem gerekiyor) GNU sürümü):template error: nontype ".. [T = T ile] bir tür adı değil"
template<typename T>
class tsfo_vector {
private:
sfo_type<T>::aptr32 m_data;
int m_size;
...
ama sonra aşağıdaki hata iletisini alabilirsiniz:
#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
ve o zaman bu gibi kullanmayı deneyin
/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;
^
Burada neyin yanlış olduğunu bilen var mı?
Güzel, teşekkürler! Aslında bununla şaşkınım ... nasıl bir veri üyesinin derlenecek bir yazım hatası işareti olması gerekiyor? biraz tuhaf bir şey. –
@GiovanniAzua, bağlantılı olan 'typename' kullanımını kullanabileceğimden çok daha iyi açıklıyor. – hmjd
@GiovanniAzua: Veri üyesi değil, türü "typedef" ile önekli. – celtschk