d
extern template
?extern template размещается в хедере, где расположено объявление шаблона и говорит компилятору, что не надо выполнять инстанцирование такого-то шаблона с такими то параметрами. В файле реализации шаблона наоборот, делается явное инстанцирование того же шаблона с теми же параметрами.
Очевидно, что такой трюк можно сделать лишь для конкретных параметров шаблона. То есть, например, нельзя таким образом разделить объявление и реализацию std::array, так как параметров у это шаблона может быть очень много.
Ну и у этого трюка есть, как бы, минус: класс инстанцируется полностью (все его методы). Если же инстанцирование идёт обычно, из хедера, то в бинарник попадут только используемые методы.