Мне нужно предоставить файл конфигурации, в котором будет описано, какие файлы заголовков STL следует включить. Я обнаружил, что обычно это делается путем определения множества макросов HAVE_XXX_HEADER. Интересно, что-то не так с явным указанием имени заголовка в макросе? Тогда вместо тестирования каждого варианта:
#if defined(HAVE_TR1_UNORDERED_MAP_HEADER)
#include <tr1/unordered_map>
#elseif (...)
#endif
Вы могли бы просто иметь:
#define UNORDERED_MAP_HEADER <tr1/unordered_map>
(...)
#include UNORDERED_MAP_HEADER
, что дополнительно обеспечивает гибкость, поскольку имя заголовка не жестко запрограммировано в настроенном файле.