Короче говоря, ответ состоит в том, чтобы выполнить миграцию с помощью утилиты tempinc в XLC.
Утилита tempinc требует, чтобы вы настраивали ваши файлы с объявлениями шаблонов в вашем файле заголовка (.h или .hpp) и вашими реализациями в файле .c (это расширение является обязательным). Когда компилятор находит экземпляры шаблона, он помещает явные экземпляры в другой исходный файл в вашем каталоге tempinc, заставляя генерировать для них код. Компилятор знает, как найти определения шаблонов, объявленные в foo.h в foo.c.
Проблема, которую я указал, заключается в том, что разработчики зависимостей не знают об этом и, следовательно, не могут включать ваши .c файлы в зависимости.
В версии 6.0 IBM рекомендует использовать параметр -qtemplateregistry вместо -qtempinc. Затем вы можете использовать типичный набор шаблонов, включающий определения шаблонов в заголовочный файл, который затем будет виден для искателя зависимостей, или помещать их в отдельный файл, который вы #include из заголовочного файла, а также будет найдено с помощью средства поиска зависимостей.
Если вы переходите с использования -qtempinc, вы можете условно #include ваш файл реализации шаблона из вашего файла декларации с кодом, как показано ниже:
// end of foo.h
#ifndef __TEMPINC__
#include "foo.c"
#endif
Таким образом, ваш код будет собираться и связываться, если вы когда-нибудь решите вернуться к использованию параметра -qtempic.