今天之间的区别,我偶然发现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