C++ named requirements:CopyConstructible
Specifies that an instance of the type can be copy-constructed from an lvalue expression.
Specifies that an instance of the type can be copy-constructed from an lvalue expression.
Specifies that an instance of the type can be copy-constructed from an lvalue expression.