如果std::string
的std::size_type
是默认分配的,如果npos为-1,size_type如何成为无符号整数?
21.3.1类模板basic_string的
typedef typename allocator_traits<Allocator>::size_type size_type;
而且std::size_type
默认分配是,std::size_t
,
20.9.9默认分配
typedef size_t size_type;
而我们知道,std::size_t
始终是一个无符号整型,
C++标准
5.3.3的sizeof
的sizeof和sizeof ...的结果是std::size_t
类型的常量。
[注:标准::为size_t在标准报头中定义<cstddef>
8.2类型
的内容是一样的标准C库头<stddef.h>
,有以下变化:
C标准
个6.5.3.4所述的sizeof和_Alignof运营
两个操作的结果的值是实现定义,
及其类型(无符号整型)是size_t
,在<stddef.h>
(和其它标题)所定义。
std::basic_string::npos(定义为size_type
)为-1?
它的'-1'隐式转换为'size_type'? –
您是否真正阅读过您链接的页面?第一句话说:“这是一个特殊值,等于size_type类型可表示的最大值。” – user463035818