(この質問は、ショットを撮ることをいとわない人にとっては報奨金があります)
こんにちは、コンテナクラスを引数としてオーバーロードテンプレート関数を定義しました
(ここでは CntrlCls1 = RWTValOrderedVectorおよび CntrlCls2 = RWTPtrSortedVector )
template<Class X> void func(CntrCls1<X>* ){}
template<Class X> void func(CntrCls1<X*>* ){}
template<Class X> void func(CntrCls2<X>*){}
定義した後、次のように関数を呼び出しています
func(&ABC);
ここで、ABC はCntrCls1<*>型のインスタンスです(つまり、ポインターのコンテナーです)。
現在、これは私のコンピューターでは正常にコンパイルされていますが、別のシステムでコンパイルすると、何らかの理由でコンパイラーが CntrlCls2 パラメーターを使用して関数テンプレートをインスタンス化しようとし、その結果、エラーが発生します。
CtrCls1 と CtrCls2 は無関係のコンテナーです。
更新: VS 2008 を使用して両方のシステムを構築しているので、問題にはなりません。
Update1: CtrCls2 パラメーターを使用して関数テンプレートをコメントアウトした後、再コンパイルしようとしましたが、コンパイルは最初の関数をインスタンス化しようとしています (つまり、ポインターなしで) :-(