8
试图typedef我的内存对齐我出来了以下构造(仍然有点工作正在进行中,因为我需要更正GNU版本):模板错误:非类型“.. [与T = T]不是类型名称”
#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
,然后我尝试使用这样的:
template<typename T>
class tsfo_vector {
private:
sfo_type<T>::aptr32 m_data;
int m_size;
...
但后来我得到了以下错误消息:
/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;
^
任何人都可以建议这里有什么问题吗?
好的,谢谢!实际上,我对这个问题感到困惑......数据成员如何在前面编译一个typedef标记?这是一个奇怪的事情。 – 2012-08-15 12:45:48
@GiovanniAzua,相关的答案比我更好地解释了'typename'的使用。 – hmjd 2012-08-15 12:49:59
@GiovanniAzua:不是数据成员,但它的类型前缀为'typedef'。 – celtschk 2012-08-15 12:53:13