我有以下代码:为什么运算符转换不会隐式调用模板函数? (C++)
template <class T>
struct pointer
{
operator pointer<const T>() const;
};
void f(pointer<const float>);
template <typename U>
void tf(pointer<const U>);
void g()
{
pointer<float> ptr;
f(ptr);
tf(ptr);
}
当我编译用gcc 4.3.3我得到一个消息(aaa.cc:17: error: no matching function for call to ‘tf(pointer<float>&)’
)的代码,指示被叫'operator pointer<const T>'
用于非模板函数f编译器() ,但没有用于模板函数tf()。为什么和是否有任何解决方法缺少重载tf()与const和非const版本?
在此先感谢您的帮助。
也许stackoverflow软件正在删除您的模板尖括号? – jonner 2010-04-19 17:41:59