Je dois fournir un fichier de configuration, qui décrira les fichiers d'en-tête STL à inclure. J'ai trouvé que généralement cela se fait en définissant beaucoup de macros HAVE_XXX_HEADER. Je me demande s'il y a quelque chose de mal à fournir explicitement le nom de l'en-tête dans une macro. Ensuite, au lieu de tester chaque variante:Y compris le fichier d'en-tête défini par la macro
#if defined(HAVE_TR1_UNORDERED_MAP_HEADER)
#include <tr1/unordered_map>
#elseif (...)
#endif
vous pouvez simplement avoir:
#define UNORDERED_MAP_HEADER <tr1/unordered_map>
(...)
#include UNORDERED_MAP_HEADER
qui, en plus synonyme de flexibilité, puisque le nom d'en-tête n'est pas codé en dur dans le fichier configuré.
Le problème est que montrer que cela fonctionne sur un compilateur particulier n'implique pas qu'il fonctionne sur tous les compilateurs standard. – GManNickG