http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57684
--- Comment #4 from Francesco Biscani <bluescarni at gmail dot com> --- (In reply to Jonathan Wakely from comment #3) > Yes, because std::unique_ptr has a special exception that says it can be > instantiated with incomplete types, so that should work OK (like your case > where the static member is a raw pointer, which prevents unordered_map being > instantiated when base<> is instantiated. > > I hope for GCC 4.9 we can make unordered_map support incomplete types again, > so the original code would work, but it doesn't support them currently, > which is allowed by the standard. Thanks for the explanation, gonna wrap my code in unique_ptr then. As a side note, this seems to work for std::map, are the requirements different regarding the completeness of types?