エラー C2783 に直面しています。同様の構造のテストケースでエラーを再現します。
テストケースは次のとおりです。
#include <iostream>
namespace ns1 {
template <class T> class class_1 {};
}
namespace ns2 {
using namespace ns1;
template <typename T> inline ns1::class_1<T> myfunc();
template<typename T>
inline ns1::class_1<T> myfunc() {
int a,b;
std::cin>>a;
std::cin>>b;
if(a<b) return true;
else return false;
}
}
namespace ns3 {
struct myStruct {
ns1::class_1<double> var1;
ns1::class_1<double> var2;
myStruct ( const ns1::class_1<double>& cl0= ns2::myfunc<double>(),
const ns1::class_1<double>& cl1= ns2::myfunc<double>()): var1(cl0), var2(cl1) {};
};
}
エラー:
エラー C2783: 'ns1::class_1 ns2::myfunc(void)': 'T' のテンプレート引数を推測できませんでした
また、27行目(cl0)でエラーが発生し、28行目(cl1の場合)でエラーが発生しないのはなぜですか?一部の関数でこれを使用しようとすると、構造体の引数で使用するとエラーが発生するだけでうまく機能します。