2009-01-13 14 views
6

Escuché que hay una implementación ligera de impulso donde solo hay punteros inteligentes y algunas otras cosas básicas. Creo que escuché que tampoco usa ninguna función del sistema operativo. Intenté buscarlo pero no encontré nada. ¿Alguien sabe cómo se llama o una implementación de indicadores inteligentes de impulso que no requieren llamadas al sistema operativo?boost lite?

Respuesta

14

Puede utilizar BCP, pero recuerda que usando las bibliotecas Boost sólo hace que se paga por lo que usa - los punteros inteligentes se implementan en la moda sólo de encabezado, lo que significa que no hay llamadas del sistema operativo, una biblioteca sin compilado a enlace a, etc. Por lo tanto, si no está distribuyendo el código fuente, puede descargar el conjunto de impulso completo y usar solo los bits que necesita, sin causar ningún tipo de aflicción (no solicitada) a su aplicación.

+4

¿Cómo se implementa en forma de encabezado solo significa que no hay llamadas al sistema operativo? –

+0

La totalidad de la implementación del puntero inteligente de Boost reside en un archivo de cabecera; se implementa sin ninguna dependencia binaria. Sí, * podría * poner una llamada específica del sistema operativo en un encabezado, pero esa es una mala idea, y no creo que pase el proceso de revisión de Boost. –

+0

@Haper Shelby - ¿Se puede ampliar un poco? La mayoría de las bibliotecas de plantillas solo son encabezadas y sería posible escribir una biblioteca de plantillas que utilizara las llamadas al sistema operativo. Por ejemplo, imagine una biblioteca de plantillas de sistema de archivos que podría usar las versiones amplia/estrecha de las llamadas al sistema de archivos. ¿Por qué sería eso una mala idea? – Benj

7

Usted puede utilizar el bcp utility para extraer sólo el subconjunto del árbol por completo que necesita para apoyar una biblioteca determinada. Sin embargo, no estoy al tanto de ninguna implementación independiente de Boost.

1

Los punteros inteligentes son parte del tr1 extensions to the standard library. Si el proveedor del compilador lo incluye, ese sería probablemente el camino a seguir. Sé de gcc y Visual Studio 2008 para 2 ejemplos donde son compatibles.

+0

Parece que ahora se incluye con Visual Studio 2008 SP1 (ediciones completa y Express). ¡Hurra! Solía ​​ser un paquete de características descargado por separado. – Bklyn

4

"boost lite" se usa generalmente para referirse a un estilo de uso de impulso en el que se limita a los componentes de impulso "solo encabezados". Así que esto incluye los encabezados de puntero inteligente con plantillas masivas y boost :: bind, pero no cosas como regex o program_options que requieren que establezca un enlace con una biblioteca para obtener la mayor parte de la funcionalidad.

Si está compilando y liberando .libs, el estilo boost-lite significa que no introduce una dependencia de enlace en las libs de boost (menos problemas para los usuarios intermedios), y si usa el pimpl idiom extensivamente puede simplemente utilice smart ptrs, etc. internamente y los usuarios lib no verán los tipos de boost en sus encabezados. Esta puede ser una técnica útil de gestión de cambios para introducir el impulso sigiloso en entornos conservadores.

es decir, es solo una forma particular de usar una instalación de refuerzo normal, no un paquete separado.

0

Pensé que podría vincular solo las secciones de impulso que necesitaba usar si no me equivoco? No creo que puedas vincular demasiado boost * por así decirlo.

Cuestiones relacionadas