今天之間的區別,我偶然發現std::vector
的these standard declarations構造函數:構造函數:違約和委託參數
// until C++14
explicit vector(const Allocator& alloc = Allocator());
// since C++14
vector() : vector(Allocator()) {}
explicit vector(const Allocator& alloc);
這種變化可以在大多數標準集裝箱中可以看出。稍微不同的是爲例std::set
:
// until C++14
explicit set(const Compare& comp = Compare(),
const Allocator& alloc = Allocator());
// since C++14
set() : set(Compare()) {}
explicit set(const Compare& comp,
const Allocator& alloc = Allocator());
兩者有什麼模式,什麼是他們的(DIS)的優勢有什麼區別?
它們是否嚴格等價 - 編譯器是否生成類似於第一個的東西?
你說「STL」容器。你的意思是這些標準庫容器成員函數的標識是由標準本身或者某些特定實現的代碼所規定的嗎? – 2014-09-05 22:34:26
@LightnessRacesinOrbit我的意思是前者:我假設這些函數的簽名是標準的(en.cppreference.com表示有一個來自標準的改變 - 「自C++ 14以來」)。 – Nelfeal 2014-09-05 22:45:21
@LightnessRacesinOrbit我真的不明白要編輯什麼;是「STL」錯誤?對我來說,它是標準庫的一部分,它使用模板(因此標準的「模板」庫)。或者是別的什麼 ? – Nelfeal 2014-09-06 08:11:05