No, there is something else...
If the decltype is inside the struct, I get illegal indirection for some reason.
If I move it outside the struct (but inside the class Foo), I simply get C2327: 'Foo<T>::container' : is not a type name, static, or enumerator.
There is something more amiss than just a reference, if there is a reference, that is.