На самом деле, я не думаю, что библиотеки наддува станут устаревшими.
Да, вы должны иметь возможность использовать std::type_traits
, regex
, shared_ptr
, unique_ptr
, tuple<>
, std::tie
, std::begin
вместо Boost Typetraits / Utility, Boost Smartpointer, Boost Tuple , Библиотеки Boost Range, но на практике не должно быть никакой необходимости «переключаться», если вы не перемещаете больше своего кода на c ++ 11.
Кроме того, по моему опыту, версии std
большинства из них несколько менее функциональны. Например. AFAICT стандарт не имеет
- регулярные выражения Perl5
- 1020 * шаблон 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_AUTO)
- Boost Utility (
boost::result_of<>
и связанные с ней)
- Boost Foreach (BOOST_FOREACH)
- Не забудьте: Boost Move - который позволяет писать классы с семантикой move с синтаксисом, который одинаково хорошо компилируется на компиляторах C ++ 03 с компиляторами Boost 1_48 + и C ++ 11.
Только мои $ 0,02