Пусть есть шаблонная функция:
template <typename T> void foo();
И есть множество её специализаций под каждый тип. Как правило их выносят в inline-функции, но в моём случае они получаются большими и раздувать код не хотелось бы. Отсюда вопрос: как правильно сгенерировать объектный код для всех желамых специализаций?
Пока в cpp-файле, в котором написаны специализации, сделал пустые заглушки с перечислением указателей на функции foo() для каждого типа. Это заставляет компилятор не оптимизировать их, встраивая как inline прямо в заглушку, а генерировать объектный код с точкой входа. Побочный эффект — тело функции-заглушки так же будет болтаться в объектнике со своим экспортом.
Хотелось бы понять, есть ли стандартный способ добиться того же и без побочных эффектов? Как это решается в С++11?