If you call Connection::set_option(Option*), then Connection::connect(), then copy the Connection,
the copy constructor for the new Connection object will try to connect.
However, the connection attempt will likely fail.

Connection's copy constructor calls DBDriver's copy constructor, which calls DBDriver::copy().

DBDriver::copy() calls DBDriver::connect(MYSQL&), which calls DBDriver::connect_prepare().

DBDriver::connect_prepare() tries to apply any pending options.
However, if the original Connection has already connected,
it discarded the pending options in its DBDriver,
so the new Connection's DBDriver will not have any options applied.
This makes it very likely that the new object's connect() will fail.