关于复制初始化的一个简单有关问题,复制构造函数调用了吗

关于复制初始化的一个简单问题,复制构造函数调用了吗?
#include <iostream>
using namespace std;

class A {
public:
int a;
};

class B {
int x;
public:
B(const A& a) { cout << "B()" << endl; }
B(const B&) { cout << "B(const B&)" << endl;}
};

int main()
{
A a;
B b = a;
}
C++ primer4 p407说复制初始化首先使用指定构造函数创建一个临时对象然后用复制构造函数将那个临时对象复制到正在创建的对象,按这个意思是不是可以这么理解
首先B b = a;
产生临时对象 temp(a);
拷贝构造函数 B b = temp;
为什么事实上打印出来B(const B&) { cout << "B(const B&)" << endl;米有呢??难道米有调用还是编译器做了优化?

------解决方案--------------------
一般编译器会优化成B b(a)
所以执行B(const A& a) { cout << "B()" << endl; }
B(const B&)是不会执行的
------解决方案--------------------
这是我从 C++ Primer 第四版 摘出来的:
Stock stock2 = Stock ("Boffo Objects", 2, 2.0);
stock1 = Stock("Nifty Foods", 10, 50.0); // temporary object

The first statement is initialization; it creates an object with the indicated value; it may or may not create a temporary object. 

它可能也可能不(may or may not)产生临时对象