Use copy ctor for initialization from prototype

This is more efficient than a mem copy, as the compiler can at least
use the copy semantics while optimizing.