我想知道以下代码有什么问题:
template<typename T, typename U = T>
operator U()
{
return U();
}
它以 失败error: no matching function for call to 'Test1::Test1(Test&)'
,而以下代码的转换成功:
template<typename T>
operator T()
{
return T();
}
完整代码:
class Test
{
public:
template<typename T, typename U = T>
operator U()
{
return U();
}
};
class Test1{};
int main() {
Test t;
Test1 t1 = (Test1)t;
return 0;
}
class Test
{
public:
template<typename T>
operator T()
{
return T();
}
};
class Test1{};
int main() {
Test t;
Test1 t1 = (Test1)t;
return 0;
}