其实它想写成:
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_CharT>::other _Char_alloc_type;
但是,因为__alloc_traits<_Alloc>是一个模板类
(__alloc_traits是模板并且参数_Alloc是模板参数,目前并不确定实际类型),
那么它的成员rebind是个什么东西就不能确定。加上一个template关键字在rebind前面,是告诉编译器这个是一个模板。
至于你写的那个形式,有些莫名其妙,不知你为什么加了一个XXX。
【 在 xingco123 (娃儿他爹) 的大作中提到: 】
: 标 题: Re: 请教1个关于模版类中的嵌套模版类的成员
: 发信站: 水木社区 (Sun Oct 25 10:21:24 2020), 站内
:
: 我其实问的是个语法问题。stl是如下定义的
:
: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
: rebind<_CharT>::other _Char_alloc_type;
: 为啥不是该写成如下么
:
: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template<XXX>
: rebind<_CharT>::other _Char_alloc_type;
:
: 【 在 DoorWay 的大作中提到: 】
: : 这个问题你要弄懂,估计得分三小点各个击破:
: : 1 开头的typename 是模板的语法约束,告诉编译器接下来是个类型
: : 2 std库里traits的概念。以及traits里定义value 、type 的常规手法
: : ...................
: --
:
: ※ 来源:·水木社区
http://m.newsmth.net·[FROM: 101.224.174.*]
--
FROM 76.126.252.*