说明
对应关系
案例分析
差异案例一
template<typename T> void show(T a) { // error code } int main() { show({1,2,3}); }- 编译报错
template不支持两次推导.
auto两次推导#include <initializer_list> int main() { auto a = {1,2,3}; }- 第一次推导是编译器将
{}推导成initializer_list<T>. - 然后是
initializer_list<T>的T的推导.即valutype - argtype - const,volatile,xxx.
- 第一次推导是编译器将
类型推测二义性
- 即推导出来的
T不唯一. {1,2,3.0},推导出来的类型就不唯一.
- 即推导出来的
如何让模板兼容
核心
C++14
版权声明:本文为rubikchen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。