- 主题:请教1个关于模版类中的嵌套模版类的成员
在c++标准库中basic_string.h, 有如下别名:
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
rebind<_CharT>::other _Char_alloc_type;
为啥不能写成template<xxx> rebind<_CharT>?
在c++ primer中没看到这么template xxx<>使用过, 多谢
--
FROM 116.228.245.*
xxx是模板类型简称
【 在 fanci 的大作中提到: 】
: 请把xxx写全不然不知道你想问什么
--
FROM 101.224.174.*
我其实问的是个语法问题。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 的常规手法
: ...................
--
FROM 101.224.174.*
rebind也是一个模版类,是__alloc_traits的成员,模版类的使用不是template<Xxx> rebind么,不要纠结XXX,这只是个模版类型参数简称
【 在 here080 的大作中提到: 】
: 其实它想写成:
: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_CharT>::other _Char_alloc_type;
: 但是,因为__alloc_traits<_Alloc>是一个模板类
: ...................
--
FROM 101.224.174.*
谢谢
【 在 here080 的大作中提到: 】
: 模板类的使用一般是rebind<XXX>,而不是template<XXX> rebind
:
--
FROM 101.224.174.*