История изменений
Исправление fsb4000, (текущая версия) :
А вообще может я не совсем понял. Добавил copy конструктор с noexcept и стало так:
#include <iostream>
#include <vector>
using namespace std;
struct A {
A() { cout << "ctor" << endl; }
A(const A& x) noexcept(true) { cout << "copy ctor" << endl; }
A(A&& x) noexcept(false) { cout << "move ctor" << endl; }
};
int main()
{
vector<A> v;
for (auto i = 0; i < 4; ++i)
{
cout << "Item: " << endl;
cout << "Capacity: " << v.capacity() << endl;
v.push_back(A());
}
}
Item:
Capacity: 0
ctor
move ctor
Item:
Capacity: 1
ctor
move ctor
copy ctor
Item:
Capacity: 2
ctor
move ctor
copy ctor
copy ctor
Item:
Capacity: 3
ctor
move ctor
copy ctor
copy ctor
copy ctor
Добавлено: noexcept не влияет, c noexcept(false) у copy ctor, тоже самое...
Исходная версия fsb4000, :
А вообще может я не совсем понял. Добавил copy конструктор с noexcept и стало так:
#include <iostream>
#include <vector>
using namespace std;
struct A {
A() { cout << "ctor" << endl; }
A(const A& x) noexcept(true) { cout << "copy ctor" << endl; }
A(A&& x) noexcept(false) { cout << "move ctor" << endl; }
};
int main()
{
vector<A> v;
for (auto i = 0; i < 4; ++i)
{
cout << "Item: " << endl;
cout << "Capacity: " << v.capacity() << endl;
v.push_back(A());
}
}
Item:
Capacity: 0
ctor
move ctor
Item:
Capacity: 1
ctor
move ctor
copy ctor
Item:
Capacity: 2
ctor
move ctor
copy ctor
copy ctor
Item:
Capacity: 3
ctor
move ctor
copy ctor
copy ctor
copy ctor