Coloquei minhas habilidades em C ++ na prateleira há vários anos e parece que agora, quando preciso delas novamente, o cenário mudou.
Temos o C ++ 11 agora, e meu entendimento é que ele se sobrepõe a muitos recursos do Boost.
Existe algum resumo de onde estão essas sobreposições, quais bibliotecas do Boost se tornarão herdadas, recomendação de quais recursos do C ++ 11 usar em vez dos de otimização e quais não?
Respostas:
Substituível por recursos ou bibliotecas da linguagem C ++ 11
<cmath>
, veja a lista abaixolog1p
,expm1
cbrt
,hypot
acosh
,asinh
,atanh
TR1 (eles estão marcados na documentação se forem bibliotecas TR1)
Recursos portados em C ++ 11:
Substituível pelos recursos da linguagem C ++ 17:
<cmath>
( Matemática Especial IS ), veja a lista abaixoA equipe padrão ainda está trabalhando nisso:
Uma grande parte do MPL pode ser reduzida ou removida usando modelos variados. Alguns casos de uso comum do elenco Lexical pode ser substituído por std :: to_string e std :: sto X .
Algumas bibliotecas do Boost estão relacionadas ao C ++ 11, mas também têm mais extensões, por exemplo, o Boost.Functional / Hash contém hash_combine e funções relacionadas não encontradas no C ++ 11, o Boost.Chrono tem E / S e arredondamento e muitos outros relógios, etc., portanto, você ainda pode querer dar uma olhada nos de impulso antes de realmente descartá-los.
fonte
std::unique_ptr
é parte do TR1 (uma vez que exige semântica Move)Na verdade, não acho que as bibliotecas de impulso se tornem legadas.
Sim, você deve ser capaz de usar
std::type_traits
,regex
,shared_ptr
,unique_ptr
,tuple<>
,std::tie
,std::begin
em vez de Typetraits reforço / Utility, Boost ponteiro inteligente, Boost Tuple, bibliotecas Boost Gama, mas não deve, na prática, há real necessidade de 'switch', a menos que você está se movendo mais seu código para c ++ 11.Além disso, na minha experiência, as
std
versões da maioria delas são um pouco menos úteis. Por exemplo, AFAICT, o padrão não possuibool boost::basic_regex<>::empty()
) e outras diferenças de interfacePreguiçosos, lambdas baseados em modelos de expressão; eles têm benefícios inevitáveis, pois podem ser polimórficos hoje , em oposição ao C ++ 11. Portanto, eles geralmente podem ser mais sucintos:
Definitivamente, isso ainda tem algum apelo sobre lambdas C ++ 11 (com tipos de retorno à direita, captura explícita e parâmetros declarados).
Além disso, há um papel GRANDE para o Boost, precisamente para facilitar a migração de caminho do C ++ 03 para o C ++ 11 e integrar as bases de código C ++ 11 e C ++ 03. Estou pensando particularmente em
boost::result_of<>
e relacionado)Apenas meus $ 0,02
fonte