Really?! that is not at all what I understood from the documentation. I honestly, genuinely thought A[C^] meant that C is a capture set, so that you can parameterise over the capture set of your inputs - a little like @Odersky explained here.
With my (incorrect?) mental model, it makes perfect sense that B(new Impure) compiles. B’s constructor takes any tracking type. But since you can pass non-tracking types where tracking types are expected, you really can pass any type to the constructor.