Does std::polymorphic require passed types to be copyable?
Perhaps move-assignment would have been a better example? That one at least mentions construction using an rvalue so I think that specific operation would work for move-only types.
Though now that I think about a bit more I suppose it's a bit of a moot point since the constructors all look like they require a copy-constructible T