C++11 新特性:模板别名

C++11 新特性:模板别名

参考文章:https://blogs.oracle.com/pcarlini/entry/template_aliases

2002 年,ISO C++ 标准化组织就已经提出了模板别名的概念。不过那时候还是叫做 typedef template。在接下来的几年中,以 Gabriel Dos Reis 和 Bjarne Stroustrup 为代表的开发者发展了这个想法,最终,我们在 C++ 11 中见到了这个新特性—— template aliases。

不过,只有在最新版本的 GCC 实现中才能使用这个特性(4.7 或更新版本)。但这并不是说这个特性很难实现——其实它是很容易实现的,对容器和内存管理函数这样的库尤其有用。可能只是开发者忘记在之前的版本中添加上这个功能 ;-P。

这个特性的核心功能很简单:提供类型族的别名。注意,这里并没有引入新的关键字,而是使用旧的using 关键字,加上新的语法组成。例如:

我们为所有可能的 T 类型的std::vector<T, Alloc<T>>声明了一个名字 Vec。这样,这个模板的别名就可以用作其它类型,只要直接加上 T 的实际类型就可以了。

我们可以写出更复杂的示例,但是语法还是一样的。把复杂的代码变得简单总是看起来很有趣的(对此而言,旧版本的 C++ 也有一些简化的写法)。如果对此感兴趣,那么就看看下面的代码吧:

我们用 C++ 11 的模板别名重写一下:

事实上,在 C++ 11 的内存分配库、智能指针库以及其它各种库中,有很多类似 rebind 这样的模板别名。我们可以从 GCC 最新版本的代码中看到这些别名的用例。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值