Насправді, я не думаю, що розширені бібліотеки стануть спадщиною.
Так, ви повинні бути в змозі використати std::type_traits
, regex
, shared_ptr
, unique_ptr
, tuple<>
, std::tie
,std::begin
замість підвищує TypeTraits / Utility, збільшити розумний покажчик, збільшити кортеж Підвищіть бібліотеки Range, але на практиці не повинна бути ніякої реальної необхідністю «ключ» , якщо ви не рухаєтеся більше ваш код на c ++ 11.
Також, на мій досвід, std
версії більшості з них дещо менш характерні. Наприклад, AFAICT стандарт не має
- Perl5 регулярні вирази
- call_traits
- Деякі члени інтерфейсу регулярних виразів (наприклад,
bool boost::basic_regex<>::empty()
) та інші інтерфейсні відмінності
- це кусає більше, оскільки інтерфейс Boost точно збігається з Boost Xpressive
- і це грає набагато приємніше з алгоритмами Boost String. Очевидно, що останні не мають стандартних аналогів (ще?)
- Багато речей, що стосуються 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);
Очевидно, що це все ще має деяку привабливість щодо C ++ 11 лямбда (із задніми типами повернення, явними захопленнями та оголошеними параметрами).
Крім того, існує велика роль для Boost, саме в тому, щоб полегшити міграцію шляху з C ++ 03 на C ++ 11 та інтегрувати бази C ++ 11 і C ++ 03. Я особливо думаю про це
- Автоматичне підвищення (BOOST_AUTO)
- Підвищити утиліту (
boost::result_of<>
та пов'язані з нею)
- Збільшити Foreach (BOOST_FOREACH)
- Не забувайте: Boost Move - що дозволяє писати класи з семантикою переміщення із синтаксисом, який однаково добре складатиметься на компіляторах C ++ 03 із компіляторами Boost 1_48 + та C ++ 11.
Тільки мої 0,02 долара