Trên thực tế, tôi không nghĩ rằng các thư viện boost sẽ trở thành di sản.
Vâng, bạn sẽ có thể sử dụng std::type_traits
, regex
, shared_ptr
, unique_ptr
, tuple<>
, std::tie
,std::begin
thay vì Typetraits Boost / Utility, Tăng Smartpointer, Tăng tuple, Tăng thư viện Range, nhưng không nên trong thực tế không có nhu cầu thực sự để 'chuyển đổi' trừ khi bạn đang di chuyển hơn mã của bạn để c ++ 11.
Ngoài ra, theo kinh nghiệm của tôi, các std
phiên bản của hầu hết trong số này có phần ít tính năng hơn. Ví dụ: AFAICT tiêu chuẩn không có
- Biểu thức chính quy Perl5
- cuộc gọi
- Một số thành viên giao diện regex (như
bool boost::basic_regex<>::empty()
) và sự khác biệt về giao diện
- điều này cắn nhiều hơn vì giao diện Boost hoàn toàn khớp với Boost Xpressive
- và nó chơi độc đáo hơn nhiều với Thuật toán chuỗi Boost Rõ ràng, cái sau không có bản sao chuẩn (chưa?)
- Nhiều thứ liên quan đến TMP (Boost Fusion)
Lười biếng, biểu hiện lambdas dựa trên mẫu; chúng có những lợi ích không thể tránh khỏi ở chỗ chúng có thể là đa hình ngày nay , trái ngược với C ++ 11. Do đó, họ thường có thể cô đọng hơn:
std::vector<int> v = {1,2,-9,3};
for (auto i : v | filtered(_arg1 >=0))
std::cout << i << "\n";
// or:
boost::for_each(v, std::cout << _arg1);
Chắc chắn nhất, điều này vẫn có một số hấp dẫn so với C ++ 11 lambdas (với các kiểu trả về theo sau, các tham số khai báo và khai báo rõ ràng).
Ngoài ra, có một vai trò LỚN cho Boost, chính xác là tạo điều kiện cho việc di chuyển theo đường dẫn từ C ++ 03 sang C ++ 11 và tích hợp các cơ sở mã C ++ 11 và C ++ 03. Tôi đặc biệt nghĩ về
- Tăng cường tự động (BOOST_AUTO)
- Tăng tiện ích (
boost::result_of<>
và liên quan)
- Tăng cường thuyết minh (BOOST_FOREACH)
- Đừng quên: Boost Move - cho phép viết các lớp với ngữ nghĩa di chuyển với cú pháp sẽ biên dịch tốt như nhau trên trình biên dịch C ++ 03 với trình biên dịch Boost 1_48 + và C ++ 11.
Chỉ 0,02 đô la của tôi