知识卡片

别名声明胜出

普通读书笔记卡 · 1402

内容

using 别名声明支持模板化,而 typedef 不能直接成为别名模板。别名模板能减少依赖类型中的 typename 与 ::type,让类型变换更容易组合。选择类型别名时,应看它能否承载泛型接口,而不只是语法长短。

参考来源

- 位置:《Effective Modern C++》第3章《移步现代C++》,条款九:优先考虑别名声明而非 typedef s(源文件:_epub-src/EPUB/text/ch004.xhtml) - 结论依据:原文指出 typedef 不能直接模板化,别名模板可减少依赖类型写法,由此得出可组合性差异。 - 原始内容:typedef 不支持模板化,但是别名声明支持。 别名模板避免了使用“ ::type ”后缀,而且在模板中使用 typedef 还需要在前面加上 typename C++14提供了C++11所有 type traits 转换的别名声明版本