Почему конструктор не вызывается для данного оператора приведения?

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
}

Когда создается oB , тогда почему B :: B (A *) НЕ вызывается для Wrap :: operator Т () ? [Примечание: B :: operator = (A *) вызывается для Wrap :: operator T () в следующем операторе]

6
задан iammilind 25 May 2011 в 06:10
поделиться