I think this is an expected behaviour.
The initialization using designated initializer does not use or consider the conversion operator A().
It’s going to directly search for a constructor of class A which in this case is ambiguous.
You may want to do a static cast when using brace initialization.
S s2{.a{static_cast<A>(b)}};