2016-04-05 11 views
6

Filesystem Technical Specification (TS) gần đây đã được hợp nhất vào tiêu chuẩn C++ 17.Có an toàn khi sử dụng Thông số kỹ thuật C++ được chấp thuận cho tiêu chuẩn tương lai trong tiêu chuẩn trước đó không?

TS tương tự cũng có sẵn cho C++ 14, nhưng trong trường hợp này, về mặt kỹ thuật chỉ có "thử nghiệm". Tuy nhiên thực tế là nó đã được chấp thuận cho C++ 17 làm cho tôi nghĩ rằng nó đủ trưởng thành và nó có thể được sử dụng một cách an toàn.

Khi làm việc trên dự án C++ 14 có nhiều khả năng sẽ được nâng cấp lên C++ 17 trong tương lai và giả sử trình biên dịch tôi sử dụng hỗ trợ trên cả hai phiên bản, bạn sẽ khuyên bạn không sử dụng TS "thử nghiệm" rằng nó sẽ chính thức trở thành một phần của tiêu chuẩn tiếp theo?

Câu hỏi của tôi về khóa học mở rộng đến bất kỳ TS nào đã được chấp nhận trong phiên bản C++ trong tương lai và có sẵn cho các tiêu chuẩn trước đó.

+0

Hãy hỏi nhà cung cấp của bạn. Mối quan tâm lớn nhất là các API thay đổi giữa TS và IS theo các cách tùy ý, do đó, có một chi phí di chuyển trong tương lai không thể xác định. Tuy nhiên, chi phí * có thể * rất nhỏ. –

+0

Bạn không thể nhận bảo hành tại đây. Trong trường hợp không chắc, điều này vẫn còn thổi phồng, khó tưởng tượng nó sẽ đưa bạn hơn một vài giờ để dự phòng cho Boost.Filesystem. Cho dù bạn nghĩ rằng đó là 'an toàn' là ai cũng đoán được. –

+1

Không trừ khi bạn xem xét trình biên dịch của bạn có khả năng dự đoán tương lai. – EJP

Trả lời

4

Câu hỏi thực sự là liệu có ai đó đã thực hiện nó hay không, không hay không nó được chấp thuận/sáp nhập/bất kỳ tài liệu tùy ý nào. Các tính năng có thể được cắt, thêm hoặc sửa đổi tại bất kỳ thời điểm nào trong quá trình tiêu chuẩn hóa. Chúng tôi đã nhìn thấy mọi thứ được cắt từ C++ 14 ngay trước khi phát hành và cũng có những thứ không thể làm cho nó được sửa đổi sau này. Các nhà cung cấp dựa trên các phiên bản tài liệu cụ thể khi thực hiện các tính năng và do đó cách chắc chắn duy nhất là tham khảo tài liệu về bất kỳ trình biên dịch nào bạn đang sử dụng.

2

Việc triển khai thực tế có thể chứa các tính năng không theo tiêu chuẩn hiện tại và có thể có lỗi trong các tính năng khác được xác định trong tiêu chuẩn hoặc thậm chí không thể triển khai các phần cụ thể - Microsoft đã biết để cho các phần của tiêu chuẩn chưa được thực hiện. Nhưng nếu một trình biên dịch hỗ trợ một tính năng, và nếu tính năng đó là một phần của tiêu chuẩn tiếp theo, có rất ít rủi ro nếu bất kỳ nó sẽ biến mất trong phiên bản tương lai của trình biên dịch cụ thể đó. Đơn giản, một số trình biên dịch khác có thể không thực hiện nó ngay sau khi được phê duyệt theo tiêu chuẩn, nhưng bạn biết liệu đó có phải là vấn đề trong trường hợp sử dụng cụ thể của bạn hay không.

2

Có an toàn khi sử dụng Thông số kỹ thuật C++ được chấp thuận cho tiêu chuẩn tương lai trong tiêu chuẩn trước đó không?

Nó phụ thuộc vào những gì bạn có nghĩa là bằng cách "an toàn"

  1. Có xách tay?

số

  1. Liệu nó hoạt động?

Bạn cần kiểm tra ghi chú phát hành phiên bản công cụ của bạn và ghi chú phát hành của phiên bản thư viện chuẩn của bạn (chúng có thể khác nhau).

  1. Nó có hoạt động vào ngày mai không?

Ai biết được?

  1. Tôi có nên đầu tư thời gian vào mã giả định nó hoạt động không?

có thể không.

Tóm lại, câu trả lời là "không".

Sử dụng phiên bản tăng cường cho đến khi tiêu chuẩn được xuất bản và trình biên dịch và thư viện chuẩn của bạn phù hợp với nó.

Các vấn đề liên quan