C++クイズ explicitコンストラクタ編

先輩から以下のような問題を出された。

【問題】
class MyClass {
public:
MyClass(int m_):m(m_) {} ;
private:
int m;
};
のようなクラスがある場合、

MyClass m1(0); // A
MyClass m2 = 0; // B
どっちの初期化もできちゃうよ。
この2つの違いはなーに?
どっちかしか使えない状況はある?

Aの場合は、普通にM(int m_)のコンストラクタが呼ばれて初期化が行われる。

Bの場合も、結果としては同じだけど、おそらく以下のような手順で初期化が行われる。

  1. 右辺値が一度 "M(0)" にキャストされ、
  2. private変数のmが0で初期化されたMクラスのインスタンスが生成され、
  3. 生成されたインスタンスが、Mクラスのデフォルトコピーコンストラクタでm2にコピーされる

M(int m_)のコンストラクタにexplicit宣言をつけた場合、Mのケースだとコンストラクタを明示しないといけないので、コンパイルエラーになるという話でいいんだろうか?