En realidad, no creo que las bibliotecas de impulso se conviertan en legado.
Sí, usted debería ser capaz de utilizar std::type_traits
, regex
, shared_ptr
, unique_ptr
, tuple<>
, std::tie
, std::begin
en lugar de Typetraits Boost / Utilidad, Boost SmartPointer, Boost Tuple, Boost bibliotecas Range, pero no debe ser en la práctica hay necesidad real de 'interruptor' a menos que se están moviendo más de su código para c ++ 11.
Además, en mi experiencia, las std
versiones de la mayoría de estas son algo menos características. Por ejemplo, AFAICT el estándar no tiene
- Perl5 expresiones regulares
- call_traits
- Ciertos miembros de la interfaz regex (como
bool boost::basic_regex<>::empty()
) y otras diferencias de interfaz
- esto muerde más ya que la interfaz de Boost coincide exactamente con Boost Xpressive
- y juega mucho mejor con Algoritmos de cadena de refuerzo Obviamente, este último no tiene contrapartes estándar (¿todavía?)
- Muchas cosas relacionadas con TMP (Boost Fusion)
Perezoso, expresión lambdas basada en plantillas; tienen beneficios inevitables, ya que pueden ser polimórficos hoy , a diferencia de C ++ 11. Por lo tanto, a menudo pueden ser más concisos:
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);
Definitivamente, esto todavía tiene cierto atractivo sobre C ++ 11 lambdas (con tipos de retorno finales, captura explícita y parámetros declarados).
Además, Boost tiene una función GRANDE, precisamente al facilitar la migración por ruta de C ++ 03 a C ++ 11 e integrar las bases de código de C ++ 11 y C ++ 03. Estoy pensando particularmente en
- Boost Auto (BOOST_AUTO)
- Boost Utility (
boost::result_of<>
y relacionado)
- Boost Foreach (BOOST_FOREACH)
- No olvide: Boost Move, que permite escribir clases con semántica de movimiento con una sintaxis que se compilará igualmente bien en compiladores C ++ 03 con compiladores Boost 1_48 + y C ++ 11.
Solo mis $ 0.02