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