【发布时间】:2013-10-17 22:26:35
【问题描述】:
在 C++11 中,您可以通过执行类似的操作来创建“类型别名”
template <typename T>
using stringpair = std::pair<std::string, T>;
但这与您期望的模板 typedef 的外观有所不同:
template <typename T>
typedef std::pair<std::string, T> stringpair;
所以这就提出了一个问题——他们为什么需要提出一种新的语法?旧的typedef 语法有什么不适合的?
我知道最后一点没有编译,但为什么不能编译?
【问题讨论】:
-
可能是新语法更具可读性,因为名称与类型分开,用 = 分隔。更不用说把别名放在现有类型后面似乎不像
typedef那样在我的大脑中向后工作。 -
我仍然认为这是“我们讨厌
typedef,但出于历史原因使用它;但是,现在我们正在添加新功能,我们有机会流浪。”跨度> -
@TemplateRex,什么是“模板”?
-
@Charles 错字,已修复!
标签: c++ templates c++11 typedef template-aliases