次のような関数テンプレートがあるとします。
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)
doStuff
Foo<Bar>
T*()
Bar*
Bar
T
これを 2 つのテンプレートで機能させるためにできることはありますか? または、テンプレート関数の引数が実際のポインター型である必要があるか、強制演算子を持つテンプレート クラスを非テンプレート関数に渡す必要がありますか?