Pregunta

He estado leyendo el libro de Alexandrescu, diseño moderno C ++, y he estado muy impresionado por las técnicas que utiliza, por lo que quería añadir Loki biblioteca a mi solicitud.

Sin embargo, después de una investigación adicional, vi ese impulso, que ya estoy usando, ofrece una gran cantidad de funcionalidad similar (no todo, sin embargo, no pude encontrar un producto único en el impulso, por ejemplo)

Me interesaba sobre todo en el uso de Loki debido al diseño basado en políticas y los funtores.

Para mí tanto, impulso y Loki tienen pros y contras. La principal preocupación que tengo con Loki es la escasa documentación (la biblioteca no está ligado al libro ya no), pero me parece que Loki es más potente y flexible que la del refuerzo en algunas áreas (puedo estar equivocado en eso)

Antes de elegir a impulsar el uso o Loki funtores y políticas, me gustaría conocer la opinión de las personas que los utilizan en la vida real.

A veces las cosas se ven muy bien en el papel pero tiene algunos inconvenientes cuando se utilizan de verdad:)

¿Fue útil?

Solución

Estoy usando Boost en toda mi C ++ Environnement como una extensión de la biblioteca estándar (con VC9 y VC10).

Yo no lo uso en todos los proyectos.

Yo lo uso en proyectos personales (en su mayoría juegos) donde obtuve el control total de lo que son las dependencias.

Estoy usando impulso :: función en un proyecto de gran juego (con varias otras bibliotecas de impulso).

Loki es bueno, pero no me sentí la necesidad. Creo que la única parte de la biblioteca que estoy pensando en usar es el Singleton, pero estoy usando una costumbre que es lo suficientemente fina como para el momento.

Otros consejos

Alexandrescu tenía ideas muy interesantes (tipos de listas, plantillas de clase basados ??en políticas, etc.), pero muchos de ellos se han mejorado en el impulso además de ser probado a través de una gama más amplia de compiladores para la portabilidad y la corrección.

Me gustaría recomendar prefiriendo impulso siempre que sea posible sólo por estas razones. Dicho esto, moderno diseño de C ++, ofrece un montón de información sobre la flexibilidad de C ++ y una mirada en la mente de una persona (muy buena) para acercarse a una gran cantidad de problemas de programación comunes.

Por ejemplo, punteros inteligentes basados ??en políticas son una idea muy ordenado, pero podemos encontrar por qué los autores impulsar decidieron no aplicar shared_ptr y scoped_ptr de esta manera:

  

A. Parametrización desalienta a los usuarios.   La plantilla es cuidadosamente shared_ptr   elaborado para satisfacer las necesidades comunes sin   extensa parametrización. Algún día una   puntero inteligente altamente configurable puede   por inventar que también es muy fácil   usar y muy difícil de mal uso. Hasta   a continuación, shared_ptr es el puntero inteligente   de elección para una amplia gama de   aplicaciones. (Aquellos interesados ??en   punteros inteligentes basados ??en políticas deberían   lectura moderna C ++ Diseño de Andrei   Alexandrescu.)

Si necesita una amplia variedad de punteros inteligentes y usted y su equipo se siente cómodo trabajando extensamente con parametrización plantilla, a continuación, un enfoque basado en políticas para la implementación de punteros inteligentes podría funcionar para usted. Sin embargo, scoped_ptr y shared_ptr (junto con weak_ptr) tienden a hacer el trabajo bastante bien. El comportamiento combinatoria de clases de política probablemente mejor se utiliza para algo por lo que hay una gran variedad de combinaciones útiles.

Sin embargo, todavía hay algunas propuestas interesantes de Alexandrescu ese impulso no ha abordado. MOJO , por ejemplo, sigue siendo realmente útil hasta compiladores hacen un mejor trabajo implementación de constructores mover o hasta que puede utilizar referencias rvalue de C ++ 0x. Él también tiene algunas ideas muy interesantes sobre la implementación de asignadores de memoria.

En cuanto a la pregunta, utilizamos partes de Loki necesarios para mojo en nuestro proyecto comercial, pero sobre todo impulso cuando es apropiado.

Una cosa a considerar es que tal impulso de las bibliotecas tienen que pasar por un proceso de revisión durante la recepción. Después de eso, por supuesto, creo que no hay realmente muy poca supervisión en lo que cambia entrar, pero al menos hay un poco de opinión antes de que sean aceptados. Loki es la visión un solo hombre. Por supuesto Alexandrescu es bastante bueno, pero aún así ... es todas sus ideas y no hay una revisión adicional que eso.

C ++ 0x es lo que estoy usando para objetos de función rápida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top