我最近得到了在與該碼的對接位:爲什麼編譯器不會對未簽名轉換籤名提出警告?
std::size_t s = 10;
std::vector<int> v{s};
,而不是與一個大小爲10初始化,這與初始化尺寸爲1與一個元件10
。但是,矢量有一個明確的構造函數,它需要一個std::size_t
。隨着所有關於「隨處使用大括號」的宣傳,我預計很多人都陷入了這個陷阱。如果編譯器只是警告我們試圖將size_t
變成int
,這可以避免。
爲什麼不要求編譯器要做到這一點?
編輯:我原來的代碼有const std::size_t s
。顯然沒有我使用的編譯器警告,除非我刪除了const。這是一個錯誤?
沒有信息丟失 – valdo
[未能這裏編譯](http://coliru.stacked-crooked.com/a/4e2010051a6bc5ff) – NathanOliver
打開警戒線起來,用MSVS2015代碼給了我「錯誤C2398:元素「 1':從'size_t'轉換爲'int'需要縮小轉換「和」警告C4267:'初始化':從'size_t'轉換爲'int',可能丟失數據「 – Blastfurnace