cuốn sách gpt4 ai đã làm

c++ - (默认)为每个可变类型构造一个对象

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 13:55:37 28 4
mua khóa gpt4 Nike

Hãy xem xét đoạn mã này:

void Foo(std::string str1, std::string str2) {}

mẫu
voidBar()
{
Foo(Types{}...); // không biên dịch
}

Thanh();

Những gì tôi sẽ làm ở đây là Thanh Hai được xây dựng theo mặc định trong phương thức std::chuỗi các đối tượng và chuyển chúng đến Foo. Tuy nhiên, những nỗ lực vô ích của tôi (một trong số đó nằm trong đoạn mã) sẽ không được biên dịch, vì vậy tôi tự hỏi liệu điều này có khả thi hay không.

Tôi đang biên dịch bằng VC 2013 và điều này gây ra lỗi trình biên dịch cho tôi. Như đã đề cập trong phần nhận xét, các trình biên dịch khác có thể xử lý nó. Có ai có thể cho biết đoạn mã trên có tuân thủ các tiêu chuẩn không?

câu trả lời hay nhất

Đây là sự cố với quá trình mở rộng mẫu đa dạng của MSVC; khi giải nén danh sách các loại, nó không nhận ra chúng phù hợp với lệnh gọi hàm tạo. Để giải quyết vấn đề này, bạn có thể thực hiện chuyển đổi kiểu để buộc trình biên dịch nhận ra chúng:

mẫu sử dụng nhận dạng_t = T // MÃ MỚI

void Foo(int, int);

mẫu
voidBar()
{
Foo(identity_t{}...); // sử dụng phép chuyển đổi kiểu nhận dạng
}

int chính() {
Thanh();
}

Tôi chưa tìm thấy số vấn đề.

Về c++ - (mặc định) xây dựng một đối tượng cho từng loại có thể thay đổi, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21632023/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress