在下面的 :
template<typename Type>
struct MyClass
{
template<typename OtherType> MyClass(const MyClass<OtherType>& x);
template<typename OtherType = Type> void test(const MyClass<OtherType>& x);
};
在函数test
中做了什么:
情况1:默认参数为priority:MyClass<Type>(const MyClass<OtherType>& x)
隐式调用转换构造函数并被MyClass<Type>::test<Type>(const MyClass<Type>& x)
调用。
情况2:推导的参数是优先级:MyClass<Type>::test<Type>(const MyClass<OtherType>& x)
被调用。
我认为好的答案是第二个,但我不确定。您能否向我确认(并且这种情况已被标准明确定义)?
编辑:测试功能由以下人员调用:
MyClass<double> d;
MyClass<unsigned int> ui;
d.test(ui); // <- So the question is : is ui implicitely
// converted to MyClass<double> or not ?