Sebenarnya, saya tidak berpikir peningkatan perpustakaan akan menjadi warisan.
Ya, Anda harus dapat menggunakan std::type_traits
, regex
, shared_ptr
, unique_ptr
, tuple<>
, std::tie
,std::begin
bukan Typetraits Meningkatkan / Utility, Meningkatkan Smartpointer, Meningkatkan Tuple, Meningkatkan Rentang perpustakaan, tapi harus dalam prakteknya tidak ada kebutuhan nyata untuk 'switch' kecuali Anda bergerak lebih dari kode Anda ke c ++ 11.
Juga, dalam pengalaman saya, std
sebagian besar versi ini agak kurang fitur. Misalnya AFAICT yang standar tidak miliki
- Perl5 ekspresi reguler
- call_traits
- Anggota antarmuka regex tertentu (seperti
bool boost::basic_regex<>::empty()
) dan perbedaan antarmuka lainnya
- ini menggigit lebih karena antarmuka Boost sangat cocok dengan Boost Xpressive
- dan itu bermain jauh lebih baik dengan Algoritma String Peningkatan Jelas, yang terakhir tidak memiliki rekan standar (belum?)
- Banyak hal yang berkaitan dengan TMP (Boost Fusion)
Malas, lambdas berbasis template ekspresi; mereka memiliki manfaat yang tak terhindarkan karena mereka bisa menjadi polimorfik saat ini , dibandingkan dengan C ++ 11. Karena itu mereka sering kali lebih ringkas:
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);
Yang paling pasti, ini masih memiliki beberapa daya tarik atas lambda C ++ 11 (dengan tipe trailing return, penangkapan eksplisit dan parameter yang dinyatakan).
Juga, ada peran BESAR untuk Peningkatan, tepatnya dalam memfasilitasi migrasi jalur-bijaksana dari C ++ 03 ke C ++ 11 dan mengintegrasikan basis kode C ++ 11 dan C ++ 03. Saya terutama memikirkan
- Tingkatkan Otomatis (BOOST_AUTO)
- Boost Utility (
boost::result_of<>
dan terkait)
- Tingkatkan Foreach (BOOST_FOREACH)
- Jangan lupa: Boost Move - yang memungkinkan untuk menulis kelas dengan memindahkan semantik dengan sintaks yang akan mengkompilasi sama baiknya pada kompiler C ++ 03 dengan komposer Boost 1_48 + dan C ++ 11.
Hanya $ 0,02 saya