อันที่จริงฉันไม่คิดว่าห้องสมุดเพิ่มกำลังจะกลายเป็นมรดก
ใช่คุณควรจะสามารถที่จะใช้std::type_traits
, regex
, shared_ptr
, unique_ptr
, tuple<>
, std::tie
, std::begin
แทน Typetraits Boost / ยูทิลิตี้เพิ่ม Smartpointer, เพิ่ม Tuple, เพิ่มห้องสมุดช่วง แต่มีในทางปฏิบัติควรจะไม่จริงต้อง 'สวิทช์' ยกเว้นกรณีที่คุณกำลังจะย้ายมากขึ้นของ รหัสของคุณถึง c ++ 11
นอกจากนี้จากประสบการณ์ของฉันstd
เวอร์ชันเหล่านี้ส่วนใหญ่มีคุณสมบัติที่ค่อนข้างด้อยกว่า เช่น AFAICT มาตรฐานไม่ได้มี
- การแสดงออกปกติ Perl5
- call_traits
- สมาชิกอินเตอร์เฟส regex บางตัว (เช่น
bool boost::basic_regex<>::empty()
) และความแตกต่างของอินเตอร์เฟสอื่น ๆ
- สิ่งนี้จะกัดมากขึ้นเนื่องจากส่วนต่อประสาน Boost ตรงกับ Boost Xpressive
- และมันเล่นได้ดีมากขึ้นด้วย Boost String Algorithms เห็นได้ชัดว่าหลังไม่มีมาตรฐาน (หรือยัง)
- มีหลายสิ่งที่เกี่ยวข้องกับ TMP (Boost Fusion)
ขี้เกียจแลมบ์ดาตามแม่แบบนิพจน์ พวกเขามีผลประโยชน์ที่หลีกเลี่ยงไม่ได้ที่พวกเขา สามารถเป็นโพลีมอร์ฟิคได้ในปัจจุบันซึ่งต่างจาก C ++ 11 ดังนั้นพวกเขามักจะรวบรัดมากขึ้น:
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);
แน่นอนที่สุดสิ่งนี้ยังคงมีการดึงดูดมากกว่า lambdas C ++ 11 (ด้วยประเภทการส่งคืนการจับและพารามิเตอร์ที่ประกาศอย่างชัดเจน)
นอกจากนี้ยังมีบทบาทที่ยิ่งใหญ่สำหรับ Boost ซึ่งช่วยอำนวยความสะดวกในการโยกย้ายเส้นทางที่ชาญฉลาดจาก C ++ 03 ถึง C ++ 11 และผสานรวมโค้ด C ++ 11 และ C ++ 03 ฉันกำลังคิดถึง
- เพิ่มอัตโนมัติ (BOOST_AUTO)
- Boost Utility (
boost::result_of<>
และที่เกี่ยวข้อง)
- เพิ่ม Foreach (BOOST_FOREACH)
- อย่าลืม: Boost Move - ซึ่งทำให้สามารถเขียนคลาสที่มีซีแมนทิกส์ move ด้วยไวยากรณ์ที่สามารถคอมไพล์ได้ดีเท่ากันในคอมไพเลอร์ C ++ 03 พร้อมคอมไพเลอร์ Boost 1_48 + และ C ++ 11
แค่ $ 0.02 ของฉัน