假设我有一个这样的函数模板:
template<class T>
inline
void
doStuff(T* arr)
{
// stuff that needs to use sizeof(T)
}
然后在另一个.h
文件中,我有一个模板类Foo
,它具有:
public: operator T*() const;
现在,我意识到这些是不同的 T。但是如果我Foo<Bar> f
在堆栈上有一个变量,将它强制为任何类型的指针的唯一方法就是调用operator T*()
. 然而,如果 call doStuff(f)
,GCC 会抱怨doStuff
不能Foo<Bar>
自动使用运算符T*()
强制转换Bar*
,然后使用Bar
as专门化函数模板T
。
我可以做些什么来使用两个模板来完成这项工作吗?或者模板函数的参数必须是真正的指针类型,还是带有强制运算符的模板类被传递给非模板函数?