我面临错误 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)给出错误?如果我尝试在某些函数上使用它,它的工作正常,只有在结构参数中使用时才会出错。