On Thu, 1 Dec 2022 at 23:54, Jonathan Wakely wrote: > Those constructors are irrelevant. It's undefined to instantiate *any* > std::lib template with an incomplete type unless *explicitly* > permitted. It is explicitly permitted for vector and shared_ptr. It is > not permitted for optional. I forgot to give the standard reference. See [res.on.functions] p2 (2.5).