Sustitución de Boost por características de biblioteca C ++ 0x

Estoy trabajando en una biblioteca que hace un uso intensivo de las últimas funciones de biblioteca y lenguaje C ++ 0x. Estoy desarrollando principalmente en Linux con gcc4.6, pero me gustaría probar en OS X (porque Apple tiene excelentes herramientas de creación de perfiles). Desafortunadamente, todas las versiones de libstdc ++ que se envían con cualquier gcc4.6 para OS X que he encontrado tienen su <thread> características deshabilitadas (ver Aquí para mi pregunta sobre SO sobre cómo arreglar esto).

Mientras tanto, ¿alguien tiene alguna idea de una forma mínimamente invasiva (para mi biblioteca) en la que pueda sustituir la biblioteca de subprocesos de boost por la estándar? Prefiero no recurrir a sed porque estoy compartiendo este proyecto a través de SVN y me gustaría verificar mis cambios sin obligar a todos los demás a cambiar a boost :: thread, boost :: mutex, etc.

preguntado el 08 de enero de 11 a las 22:01

1 Respuestas

Este no es un código de queja estándar porque no se le permite cambiar el interior del espacio de nombres std, pero debería funcionar en la mayoría de los compiladores:

#include <boost/your_headers.hpp>
namespace std {
    using boost::thread;
    using boost::mutex;
    // ...
}

el código restante no se modifica.

Respondido el 09 de enero de 11 a las 02:01

Un enfoque alternativo podría ser el espacio de nombres cxx0x = std; o espacio de nombres cxx0x = boost ;. Esto evita perder el tiempo con std. También puede utilizar el espacio de nombres cxx0x {using std :: mutex; } vs. espacio de nombres cxx0x {usando boost :: mutex; } - Logan Capaldo

@Logan: lo siento, pero ¿cómo ayuda? ¿Qué hace que el código anterior no haga? - Yakov Galka

¡Esto parece exactamente lo que necesito! Lo probaré cuando llegue a mi máquina de trabajo y aceptaré tu respuesta en un momento. - rcv

simplemente evita reabrir std, que técnicamente es un no-no. - Logan Capaldo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.