libc ++ - deje de cambiar el nombre de std a std :: __ 1?

Después de un esfuerzo considerable para lograr que clang y libc ++ compilen, ejecuten, se integren con NetBeans e incluso compilen de forma cruzada en una máquina de 32 bits, ¡pensé que tenía todo resuelto! Así que voy a usar algunas características que libstdc ++ no tenía (la razón completa para poner mi entorno de desarrollo al revés), y descubro ... en realidad no puedo hacer eso.

libc ++ está instalado, funciona y el programa compilado (cuando funciona) lo requiere. Sin embargo, el compilador todavía intenta usar versiones de libstdc ++ en cada oportunidad, jugando con el espacio de nombres; @std::__1::map, std::__1::basic_string, y así. Ahora sé deesta pregunt por qué sucede eso y por qué libc ++ lo hace. Solo necesito saber cómooblitera it, porque es completamente inaplicable: realmente, realmente quiero usar las versiones de libc ++, y no hay nada en mi código que requiera que los dos tipos coexistan.

Intenté quitar las carpetas libstdc ++ de la ruta de inclusión y, en su defecto, las hice completamente inaccesibles. Sin suerte. No estoy usando ninguna biblioteca adicional, solo encabezados Linux / POSIX incorporados (errno, socket, syslog, fcntl).

EDITAR Mensaje de error

CoreCache.cpp:61:12: error: no member named 'emplace' in 'std::__1::map<std::__1::basic_string<char>, CacheEntry, std::__1::less<std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, CacheEntry> > >'

El mapa libstdc ++ no tiene emplace (). La versión de libc ++hac.

La siguiente invocación, desde la línea de comandos, parece funcionar:

clang++ -o stachecache -I /usr/local/lib/clang/3.1/include/ -I /usr/include/c++/v1/ -std=c++0x -stdlib=libc++ ./*.cpp

La invocación desde NetBeans no:

clang++ -stdlib=libc++ -O3   -c -O3 -Werror -MMD -MP -MF build/Release/clang-Linux-x86/CoreCache.o.d -o build/Release/clang-Linux-x86/CoreCache.o CoreCache.cpp

Respuestas a la pregunta(2)

Su respuesta a la pregunta