【发布时间】:2011-04-19 10:01:07
【问题描述】:
有人可以帮我将以下代码移植到 GCC 吗?我在这个网站上发现了很多或相关的问题,但我似乎无法在我的情况下应用建议的解决方法......
typedef float MyData __attribute__ ((__vector_size__ (16)));
template <typename T> class Data_T
{
public:
template < typename U > static bool IsEqual (const T & a, const T & b)
{
return a == b;
}
//Fixed: template <> static bool IsEqual < MyData > ( const MyData & a, const MyData & b)
static bool IsEqual ( const MyData & a, const MyData & b)
{
return true;
}
void TriggerProblem(const T & val)
{
if (!IsEqual(1.0f, val)) // Error: no matching function for call to 'Data_T<float>::IsEqual(float, const float&)'
{
}
}
};
触发问题的代码:
Data_T<MyData> inst;
inst.TriggerProblem(1.0f);
我收到一个错误error: explicit specialization in non-namespace scope 'class Data_T',这是由专业化函数IsEqual()引起的,但现在遇到了另一个错误类型(no matching function for call to 'Data_T::IsEqual(float, const float&)'),这似乎是由 __vector_size__ 属性引起的,我无法删除。请帮忙...
【问题讨论】:
-
C99和它有什么关系,这是C++代码?
-
对不起,我的意思是 ISO/IEC 14882:2003 标准