Я положил свои навыки C ++ на полку несколько лет назад, и теперь, когда они мне снова нужны, ситуация изменилась.
Сейчас у нас есть C ++ 11, и я понимаю, что он перекрывает многие функции Boost.
Есть ли какая-то сводка, где лежат эти перекрытия, какие библиотеки Boost станут унаследованными, рекомендации, какие функции C ++ 11 следует использовать вместо расширенных, а какие лучше нет?
Ответы:
Заменяемые языком C ++ 11 функции или библиотеки
<cmath>
см. Список нижеlog1p
,expm1
cbrt
,hypot
acosh
,asinh
,atanh
TR1 (они отмечены в документации, если это библиотеки TR1)
Особенности, перенесенные из C ++ 11:
Заменяемые на C ++ 17 языковых особенностей:
<cmath>
( Special Math IS ), см. Список нижеСтандартная команда все еще работает над этим:
Большая часть MPL может быть обрезана или удалена с помощью шаблонов с переменными параметрами. В некоторых случаях общее использование лексической гипсе можно заменить станд :: to_string и станд :: STO X .
Некоторые библиотеки Boost связаны с C ++ 11, но также имеют некоторые дополнительные расширения, например, Boost.Functional / Hash содержит hash_combine и связанные функции, которых нет в C ++ 11, Boost.Chrono имеет операции ввода-вывода и округления и многие другие часы, и т.д., так что вы все еще можете взглянуть на форсированные, прежде чем действительно отмахнуться от них.
источник
std::unique_ptr
является частью TR1 (так как он требует семантики перемещения)На самом деле, я не думаю, что библиотеки повышения станут наследием.
Да, вы должны быть в состоянии использовать
std::type_traits
,regex
,shared_ptr
,unique_ptr
,tuple<>
,std::tie
,std::begin
вместо повышающего TypeTraits / Utility, увеличить умный указатель, увеличить кортеж Повысьте библиотеки Range, но на практике не должна быть никакой реальной необходимостью «ключ» , если вы не двигаетесь больше твой код на с ++ 11.Кроме того, по моему опыту,
std
версии большинства из них несколько менее интересны. Например, AFAICT стандарт не имеетbool boost::basic_regex<>::empty()
) и другие различия интерфейсаЛенивые лямбды на основе шаблонов выражений; они имеют неизбежные преимущества в том, что они могут быть полиморфными сегодня , в отличие от C ++ 11. Поэтому они часто могут быть более краткими:
Наиболее определенно, это все еще имеет некоторую привлекательность по отношению к лямбдам C ++ 11 (с завершающими типами возврата, явным захватом и объявленными параметрами).
Кроме того, существует БОЛЬШАЯ роль для Boost, именно в том, что касается облегчения пути перехода с C ++ 03 на C ++ 11 и интеграции кодовых баз C ++ 11 и C ++ 03. Я особенно думаю о
boost::result_of<>
и связанные)Просто мои 0,02 доллара
источник