¿Cómo se incluye TR1?
Diferentes compiladores parecen tener ideas diferentes sobre TR1. G++ solo parece aceptar inclusiones del tipo:
#include <tr1/unordered_map>
#include <tr1/memory>
...
Mientras que el compilador Microsofts solo acepta:
#include <unordered_map>
#include <memory>
...
En cuanto a lo que entiendo TR1, la forma de Microsoft es la correcta.
¿Hay alguna manera de conseguir que G++ acepte la segunda versión? ¿Cómo se maneja el TR1 de forma portátil?
6 answers
Instale boost en su máquina.
Agregue el siguiente directorio a su ruta de búsqueda.
/ boost / tr1 / tr1
Vea aquí boost tr1 para más detalles
Ahora cuando incluyes
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-04 17:35:36
#ifdef _WIN32
#include <unordered_map>
#include <memory>
#else
#include <tr1/unordered_map>
#include <trl/memory>
#endif
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-15 20:20:12
Quizás la mejor manera sería simplemente usar las bibliotecas boost por ahora, ya que en muchos casos tienen alternativas con una interfaz similar a las características de TR1, y solo están en una ruta de encabezado y espacio de nombres diferentes (pero consistentes). Esto tiene la ventaja de trabajar en compiladores que ni siquiera han comenzado la implementación de C++0x. Y hay un montón de bibliotecas boost útiles que no están en TR1 en absoluto:)
Alternativamente, en G++, podría intentar pasar --std = gnu++0x en el línea de comandos. Esto funciona para
namespace std { namespace tr1 { using namespace std; } }
Esto es malo, naturalmente. Recomiendo encarecidamente el enfoque boost en su lugar:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-04 16:37:32
Un poco de hacky tal vez, pero simplemente podría agregar el directorio tr1 del compilador a su ruta de inclusión.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-04 16:20:55
Si está bajo Windows, agregue el directorio 'tr1' a la ruta del sistema. Entonces #include <memory>
debería funcionar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-04 16:09:02
Me hice la misma pregunta. Desafortunadamente, el informe técnico no dice cómo deben incluirse los encabezados. Solo define que las extensiones deben estar en el espacio de nombres ::std::tr1.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-21 18:44:16