- Expert C++
- Vardan Grigoryan Shunguang Wu
- 232字
- 2021-06-24 16:34:06
Deduction
When you call a template function, the compiler needs to figure out the template arguments first, even if not every template argument is specified. Most of the time, it will deduce the missing template arguments from the function arguments. For example, in part B of the preceding function, when you call app_max(5, 8) in line E, the compiler deduces the template argument as an int type, (int app_max<int>(int,int)), because the input parameters, 5 and 8, are integers. Similarly, line F will be deduced as a float type, that is, float app_max<float>(float,float).
However, what happens if there is confusion during instantiation? For instance, in the commented out line for G of the previous program, depending on the compiler, it might call app_max<double>(double, double), app_max<int>(int, int), or just give a compile error message. The best way to help the compiler deduce the type is to call the function template by giving a template argument explicitly. In this case, if we call app_max<double>(5, 8.0), any confusion will be resolved.
- Java EE 6 企業(yè)級應用開發(fā)教程
- Web交互界面設計與制作(微課版)
- Instant Typeahead.js
- Learning Neo4j 3.x(Second Edition)
- 3D少兒游戲編程(原書第2版)
- SharePoint Development with the SharePoint Framework
- Python忍者秘籍
- Mastering JavaScript High Performance
- Building Machine Learning Systems with Python(Second Edition)
- 新一代SDN:VMware NSX 網(wǎng)絡原理與實踐
- CoffeeScript Application Development Cookbook
- ActionScript 3.0從入門到精通(視頻實戰(zhàn)版)
- 超好玩的Scratch 3.5少兒編程
- Python物理建模初學者指南(第2版)
- Java自然語言處理(原書第2版)