a.CreateA()
дает вам R-значение (то есть временное значение). ComputeWithA
хочет ссылку, также известную как L-Value. Стандарт гласит, что вы не можете преобразовать R- в L-значения, поэтому MSVC здесь не так.
Однако вы можете использовать константную ссылку, поскольку этот случай явно разрешен:
void ComputeWithA(A const &a) // add a const and everything works fine