Function And Function Template Match函数模板匹配.docx
文本预览下载声明
Funcion OverLoading And Match为了确定最佳匹配,编译器将实参类型到相应形参类型转换划分等级。转换等级以降序排列如下:(from C++ Primer)An exact match. The argument and parameter types are the same.精确匹配。实参与形参类型相同。Match through a promotion (Section 5.12.2, p. 180).通过类型提升实现的匹配(第 5.12.2 节)。Match through a standard conversion (Section 5.12.3, p. 181).通过标准转换实现的匹配(第 5.12.3 节)。Match through a class-type conversion. (Section 14.9 (p. 535) covers these conversions.)通过类类型转换实现的匹配(第 14.9 节将介绍这类转换)。Function Matching and Function Templates(from C++ Primer)1.Build the set of candidate functions for this function name, including:为这个函数名建立候选函数集合,包括:Any ordinary function with the same name as the called function.与被调用函数名字相同的任意普通函数。Any function-template instantiation for which template argument deduction finds template arguments that match the function arguments used in the call.任意函数模板实例化,在其中,模板实参推断发现了与调用中所用函数实参相匹配的模板实参。2. Determine which, if any, of the ordinary functions are viable (Section 7.8.2, p. 269). Each template instance in the candidate set is viable, because template argument deduction ensures that the function could be called.确定哪些普通函数是可行的(第 7.8.2 节)(如果有可行函数的话)。候选集合中的每个模板实例都 可行的,因为模板实参推断保证函数可以被调用。3. Rank the viable functions by the kinds of conversions, if any, required to make the call, remembering that the conversions allowed to call an instance of a template function are limited.如果需要转换来进行调用,根据转换的种类排列可靠函数,记住,调用模板函数实例所允许的转换是有限的。If only one function is selected, call this function.如果只有一个函数可选,就调用这个函数。If the call is ambiguous, remove any function template instances from the set of viable functions.如果调用有二义性,从可行函数集合中去掉所有函数模板实例。4. Rerank the viable functions excluding the function template instantiations.重新排列去掉函数模板实例的可行函数。If only one function is selected, call this function.如果只有一个函数可选,就调用这个函数。Otherwise, the call is ambiguous.否则,调用有二义性。
显示全部