2009-06-02 40 views
5

Hầu hết các trình biên dịch already support C++0x. Bạn đã bắt đầu sử dụng C++ 0x hay bạn đang chờ định nghĩa của x? Tôi phải làm một số refactoring mã của tôi; sao tôi nên bắt đầu sử dụng các tính năng mới?Bạn đã bắt đầu sử dụng C++ 0x chưa?

+13

Không, chưa có BẤT K comp trình biên dịch nào hỗ trợ đầy đủ C++ 0x. Một số trình biên dịch đã thực hiện một phần SUBSET của các tính năng C++ 0x, nhưng không phải gần như tất cả. Ngoài ra, tiêu chuẩn thậm chí còn chưa hoàn thành và có thể thay đổi. –

+1

Họ đang hết thời gian trước khi họ sẽ phải đổi tên nó C++ 1x. –

+5

Nó sẽ là C++ 0a nếu nó bị trì hoãn –

Trả lời

8

C++ 0x chưa phải là tiêu chuẩn hoàn chỉnh. Có khả năng sẽ có nhiều sửa đổi trước khi một tiêu chuẩn được chấp nhận quốc tế được phát hành. Vì vậy, tất cả đều phụ thuộc, bạn đang viết mã cho cái gì? Nếu đó là cho một công việc giao tôi sẽ dính với thường xuyên C + +, chờ đợi cho các tiêu chuẩn được thiết lập và cung cấp cho cộng đồng lập trình thời gian cần để điều chỉnh. Không refactor mã bạn thực sự cần phải thực hiện, nó có thể cung cấp cho bạn một loot của rắc rối.

Tuy nhiên, tôi nghĩ C++ 0x tuyệt vời để chơi xung quanh và cũng không thể làm tổn thương làm quen với cú pháp khi 0x được chấp nhận trên toàn cầu.

+3

Kế hoạch này dành cho tiêu chuẩn được phát hành vào khoảng cuối năm nay và không có nhiều bản sửa đổi. Họ đã có một dự thảo, và nó đã được sửa đổi một hoặc hai lần. Cuối năm nay, họ sẽ đưa nó vào một cuộc bỏ phiếu trong ISO, và dự kiến ​​sẽ vượt qua ở đó mà không có bất kỳ vấn đề gì. – jalf

3

Tôi sẽ ngừng viết mã sản xuất cho đến khi '0x + y, trong đó y là khi chúng hoạt động các lỗi trong trình biên dịch và đưa nó vào tuân thủ chuẩn (bất kể tiêu chuẩn nào có thể).

Nhưng để phát triển? Tôi sử dụng nó để chơi xung quanh, viết project euler, v.v. Tôi cũng sử dụng nó trên các bản trình bày và nhóm tin.

1

Tôi sẽ bắt đầu sử dụng nó khi Visual Studio FULLY hỗ trợ. Ngay bây giờ VS10 chỉ hỗ trợ một vài tính năng.

+0

Tôi cũng nghĩ như vậy. Nhưng để chờ đợi để thực hiện đầy đủ có thể mất một thời gian tốt (ý kiến ​​của tôi là điều này sẽ mất nhiều năm và có thể sẽ có một số tính năng hiếm khi được sử dụng nhỏ sẽ không bao giờ được thực hiện trong một số trình biên dịch!). Vì vậy, tôi sẽ sử dụng tất cả các tính năng có sẵn trong tất cả các trình biên dịch có liên quan. (Unfourtunatly chúng tôi phải sử dụng GCC 3.4.5 cho phát triển nhúng của chúng tôi: - ((() – mmmmmmmm

4

Tôi đã bắt đầu sử dụng nullptr, sử dụng #define nullptr 0 cho những trình biên dịch đó (nghĩa là hầu hết) chưa hỗ trợ.

+0

+1: Tôi hiện đang nghĩ đến việc làm tương tự. – mmmmmmmm

+0

Làm tương tự. –

1

Chúng tôi vẫn đang trong quá trình chuyển đổi từ VS6 sang VS 2005. Có lẽ chúng tôi sẽ không sử dụng các trình biên dịch C++ 0x độc quyền cho công việc mới cho đến cuối năm 201x.

4

Từ liên kết bạn đã cung cấp, có vẻ như bạn thực sự có nghĩa là TR1, không thực sự là C++ 0x. Và , tôi đang sử dụng hầu hết các thư viện TR1 mới trong một thời gian, bởi vì nhiều thư viện trong số đó là các thư viện cũ là Boost.

Và tôi chỉ có thể khuyến khích mọi người sử dụng chúng.

3

Có rất ít trình biên dịch hỗ trợ điều gì đó. Trên thực tế VS chỉ hỗ trợ các thư viện TR1, gcc hỗ trợ một số tính năng như variadic templatres, rvalue, auto và một số tính năng khác. Trình biên dịch Intel có một số.

Tôi chủ yếu bắt đầu sử dụng các mẫu variadic như:

#ifdef HAvE_VARIADIC 
template<typename... Args> 
void format(std::string,Args... args); 
#else 
template<typename T1> 
void format(std::string,T1 p1); 
template<typename T1,typename T2,> 
void format(std::string,T1 p1,T2 p2); 
... 
template<typename T1,typename T2,...,typename T10> 
void format(std::string,T1 p1,T2 p2,..., T10 p10); 
#endif 
2

Chúng tôi đã chơi với C++ 0x rất nhiều và bây giờ khi gcc hỗ trợ một số tính năng chúng tôi sẽ sử dụng chúng ngay khi có sẵn. Lý do rất đơn giản - với từ khóa tự động bạn lưu rất nhiều cách gõ, với các tham chiếu rvalue bạn nhận được hiệu suất và với các danh sách khởi tạo và các mẫu variadic ít đánh máy hơn và nhiều mã dễ đọc hơn.

Trên thực tế, mục tiêu chính của tiêu chuẩn C++ 0x cũng là mục tiêu của chúng tôi, vì chúng tôi sẽ có lợi thế cho đối thủ cạnh tranh với các tính năng này. Đó là lý do tại sao chúng tôi sẽ sử dụng chúng mà không cần chờ đợi gì cả. Tất nhiên nếu bạn cần khả năng tương thích đa nền tảng, bước này là không thể chấp nhận được. Trong trường hợp bạn không quan tâm đến nó, sử dụng nó ngay lập tức và bạn chỉ có thể giành chiến thắng.

2

Có, tôi đã sử dụng C++ 0x và phát hành thư viện mã nguồn mở. Tất cả các dự án nguồn mở C++ trong tương lai của tôi sẽ được viết bằng biến thể này.Sau khi sử dụng các tham số mẫu variadic và decltype/auto tôi không thể quay trở lại!

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