次のような関数テンプレートがあるとします。
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に強制する唯一の方法は、を呼び出すことです。それでも、 call の場合、GCC は、 operator を自動的に使用して強制し、関数テンプレートをasで特殊化する代わりに、取ることができないと文句を言います。operator T*()doStuff(f)doStuffFoo<Bar>T*()Bar*BarT
これを 2 つのテンプレートで機能させるためにできることはありますか? または、テンプレート関数の引数が実際のポインター型である必要があるか、強制演算子を持つテンプレート クラスを非テンプレート関数に渡す必要がありますか?