簡體   English   中英

為什么這段代碼在沒有類型不匹配錯誤的情況下編譯(C ++ 11)?

[英]Why does this code compile (C++11) without a type mismatch error?

std::vector<char> p = {"abc", "def"};

"abc""def"不是char ,為什么編譯器沒有給出關於這種類型不匹配的錯誤?

你沒有調用帶有initializer_list<char> vector的構造initializer_list<char> 那個構造函數不可行,因為正如你所說,你沒有傳遞一個char列表。

但是vector也有一個構造函數 ,它將迭代器帶到一系列元素中。

template< class InputIt >
vector( InputIt first, InputIt last,
        const Allocator& alloc = Allocator() );

不幸的是,這個構造函數匹配,因為兩個參數將隱式轉換為char const * 但是您的代碼具有未定義的行為,因為傳遞給構造函數的開始和結束迭代器不是有效范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM