I've got a type that can't be moved or copied (by making the necessary constructors and operators private). But when I tried to compile a std::list of them, the operation failed with a very strange error (class name snipped for brevity).
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(202)
: error C2248: 'T::T' : cannot access private member declared in class 'T'
Surely it's not incumbent of a type in a linked list to be movable or copyable.
When these members are made public, the code compiles fine- even though, if the std::list had tried to access them, it would be an unresolved external, since they're only declared private. Makes no sense :(