pointer-taking constructors are protected