Я попробовал фф. код:
#include <iostream>
struct A
{
A() { std::cout << "1"; }
A(const A&) { std::cout << "2"; }
A(A&&) { std::cout << "3"; }
};
struct B
{
B() { std::cout << "4"; }
B(const B& b) : a(b.a) { std::cout << "5"; }
B(B&& b) : a(b.a) { std::cout << "6"; }
A a;
};
int main()
{
B b1;
std::cout << "END OF b1" << std::endl;
B b2 = std::move(b1);
}
И вывод:
14END OF b1
26
Мне просто интересно, почему так происходит, почему конструктор B называется вторым? Я также пытался использовать класс вместо структуры, и это то же самое поведение.