如果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