Why is S::x not odr-used?

Solution 1:

It is indeed odr-used. Your analysis is correct (and I fixed that example a while ago).