Các tính năng của C ++ 11 trong Visual Studio 2012


94

Một phiên bản xem trước của Visual Studio 2012 (phiên bản tiếp theo sau VS2010) là bây giờ đã có .

Có ai biết nó hỗ trợ những tính năng mới nào của C ++ 11 không? (Tôi không có tư cách để thử nó vào lúc này).


18
Và tôi lại thất vọng một lần nữa. Bây giờ để tìm ra cách để sử dụng GCC / GDB thành thạo hơn ...
GManNickG

3
GMan: Tôi nghĩ rằng sự tiếp nhận của họ đối với các tính năng mới là khá đáng kinh ngạc, chắc chắn là xem chúng đến từ đâu (nghĩ VC 6.0 và rùng mình) ... Chắc chắn, sự hỗ trợ của GCC là đáng kinh ngạc, nhưng có rất nhiều nơi khác. thiếu quá ...
rubenvb

5
@rubenvn: Chỉ tò mò thôi, GCC thiếu ở những chỗ nào?
HighCommander 4

5
GCC không thiếu sự hỗ trợ của C ++ 11, nó được hỗ trợ khá nhiều. VC11 thiếu hài hước. Nó thậm chí không gần.
987 S

9
@ HighCommander4: GCC thiếu ở những chỗ nào? Công cụ gỡ lỗi.
user541686,

Câu trả lời:


77

Cần lưu ý rằng Visual Studio 2010 đã có khá nhiều hỗ trợ C ++ 11 ban đầu. Vì vậy, để tóm tắt những gì đã được liên kết đến trong các câu trả lời khác, đây là những gì mới trong Visual Studio 11 không phải là một phần của Visual Studio 2010:

Vào đầu tháng 11 năm 2012, Microsoft đã công bố các Visual C ++ Compiler tháng 11 năm 2012 CTP , có thêm hơn C ++ 11 chức năng cho Visual Studio 2012:


20
Điều đó thực sự khá thất vọng ... Tôi đã hy vọng vào các mẫu đa dạng và khởi tạo đồng nhất, mà GCC đã hỗ trợ trong hai năm rưỡi và một năm rưỡi, tương ứng ...
HighCommander 4

@ Khởi tạo đồng nhất cao thậm chí không có trong danh sách các tính năng của chúng trong thông số kỹ thuật (thậm chí không hiển thị với "Không"). Có lẽ có tên khác cho điều đó?
Joel Coehoorn

2
Tôi thực sự thích chức năng printf và printf an toàn kiểu của mình. Tôi thực sự hy vọng rằng năm 2011 cuối cùng sẽ thêm các mẫu khác nhau. Các biến thể bị thiếu cũng đang ảnh hưởng emplace_backmake_shared. Có điều gì đó về cl khiến việc triển khai các variadics đặc biệt khó khăn không?
deft_code

5
Herb Sutter cho biết trong phiên Xây dựng thứ hai của mình ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ) rằng họ đã cố gắng tạo các mẫu đa dạng ... đã thử và thử và chúng không được thực hiện kịp thời cho phiên bản này. Điều này cũng ảnh hưởng đến những việc khác mà họ có thể làm.
Kate Gregory

2
Đây là một so sánh tốt về các trình biên dịch khác nhau trên C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport quy tắc Tốt: không sử dụng C ++ 11 trong GCC và mong đợi nó để biên dịch trong VS2012
Chris Hill

25

Đây là danh sách các tính năng của phiên bản studio trực quan mới và đây là danh sách những gì mà tất cả các trình biên dịch hỗ trợ


2
Không quá cầu kỳ, nhưng liên kết thứ hai của bạn cho thấy hỗ trợ x0 không phải hỗ trợ 11.
N_A

Bạn nói đúng, nhưng nó vẫn cung cấp một cái nhìn tổng quan tốt về tất cả các trình biên dịch và những gì họ đã triển khai.
Drahakar

Chỉ nghĩ rằng nó sẽ tốt để được rõ ràng. Tôi đồng ý rằng nó hữu ích.
N_A

1
Hy vọng rằng đó là một wiki, ai đó được thông báo có thể muốn cập nhật nó ^. ^
Drahakar

2
Chà, có vẻ như nó đã được cập nhật gần đây (niềm vui cho thế giới ...) :)
Drahakar

6

Có một danh sách ở đó . Điều khiến tôi ấn tượng nhất là các tính năng vẫn còn thiếu :

  • Họ nói rằng họ sẽ ưu tiên triển khai các mẫu khác nhau và họ đã không làm như vậy.
  • Chúng ta sẽ vẫn phải khai báo các hàm tạo di chuyển bằng tay cho nhiều lớp, vì không có các hàm tạo ủy quyền.
  • Các hàm tạo kế thừa không có mặt và điều này thực sự cần thiết cho một số mã
  • Không có khởi tạo thống nhất, đặc biệt là không có danh sách trình khởi tạo. Điều này thật tệ khi bạn đã sử dụng chúng với g ++.
  • Vẫn không có lưu trữ cục bộ chủ đề chính xác. Vì vậy, bạn bị mắc kẹt với boost::thread_specific_ptrmột thời gian.

Tất cả các tính năng khác còn thiếu chủ yếu là những thứ bạn có thể sống mà không có. Những gì tôi liệt kê ở đây chỉ là những gì khiến tôi khó chịu hàng ngày khi làm việc với VS10. Thật khó chịu khi chúng không hoạt động trên trình biên dịch.

CHỈNH SỬA: Tôi cũng sẽ nói thêm rằng emplace_back(một tính năng tuyệt vời cho các vùng chứa thư viện tiêu chuẩn) không được triển khai chính xác.


6
Họ đã ưu tiên các mẫu khác nhau. Đó là lý do tại sao, khi các mẫu đa dạng không được hoàn thành kịp thời, các tính năng ngôn ngữ khác cũng không được thực hiện. (Ngoại trừ, vì nó hóa ra, đối với phạm vi skunkworks-for.)
Kate Gregory

4
? Tôi thực sự không thể sống mà không có bộ khởi tạo thành viên dữ liệu không tĩnh.
Trass3r

Vấn đề với các mẫu khác nhau là tiêu chuẩn đã thay đổi quá muộn và họ không có đủ thời gian để làm lại hoàn toàn tính năng đó.
Ark-kun

5

Trong GoingNative vào tháng 2 năm 2012, STL đã thông báo rằng phạm vi cho sẽ có trong VS11 bắt đầu với bản beta, dự kiến ​​vào ngày 29 tháng 2. Bản ghi âm cuộc nói chuyện có sẵn. "The Reveal" đang ở mốc một giờ 38 phút.




Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.