Por que o construtor não é chamado para um determinado operador de fundiçã

struct A {}; 
struct B
{
  B (A* pA) {}
  B& operator = (A* pA) { return *this; }
};

template<typename T>
struct Wrap
{
  T *x; 
  operator T* () { return x; }
};

int main ()
{
  Wrap<A> a;
  B oB = a; // error: conversion from ‘Wrap<A>’ to non-scalar type ‘B’ requested
  oB = a;  // ok
}

QuandooB é construído então porqueB::B(A*) NÃO é chamado paraWrap<T>::operator T ()? [Nota:B::operator = (A*) é chamado paraWrap<T>::operator T () na próxima declaração]

questionAnswers(4)

yourAnswerToTheQuestion