Một hàm khởi tạo (như sau) có ghi đè lên hàm tạo bản sao ngầm không?Nhà xây dựng có khuôn mẫu có ghi đè lên hàm tạo bản sao ẩn trong C++ không?
template <class T>
struct Foo
{
T data;
// ...
template <class U>
Foo(const Foo<U> &other) : data((T)doSomethingWith(other.data)) {}
// ...
};
Nếu có, nó vẫn ghi đè nếu other
được chuyển bởi giá trị thay vì tham chiếu không đổi?
Nếu có, có cách nào xung quanh điều này mà không xác định rõ ràng một hàm tạo bản sao không?
Ý tưởng là đúng, nhưng những gì bạn viết là sai. Bạn có nghĩa là "Một nhà xây dựng bản sao sẽ không ..."? Đó là sai. Bạn có nghĩa là "Một constructor sao chép templated sẽ không ..."? Không có những điều như vậy. –
@BenVoigt Mặc dù tôi nghĩ rằng nó đã được rõ ràng trước đây, tôi đã cố gắng để làm cho nó chính xác hơn - mặc dù tbh Tôi nghĩ rằng đó là khó hiểu hơn bây giờ. – David