Why is S::x not odr-used? It is indeed odr-used. Your analysis is correct (and I fixed that example a while ago).