分类: C/C++
2008-04-15 20:59:12
来源:BLOG 作者:fatalerror99 |
这样的转换可用于函数调用过程,这没错,但是在你可以调用一个函数之前,你必须知道哪个函数存在。为了知道这些,你必须为相关的 function templates(函数模板)推演出 parameter types(参数类型)(以便你可以实例化出合适的函数)。但是在 template argument deduction(模板实参推演)过程中不考虑经由 constructor(构造函数)调用的 implicit type conversion(隐式类型转换)。《C++箴言:声明为非成员函数的时机》不包括 templates(模板),所以 template argument deduction(模板实参推演)不是一个问题,现在我们在 C++ 的 template 部分,这是主要问题。 现在我们对 operator* 的混合模式调用可以编译了,因为当 object oneHalf 被声明为 Rational |