Нет, шаблон не создается.Ответ Mooing Duck содержит все необходимые кавычки, но вот некоторый анализ.
Инстанцирование, по умолчанию, не может произойти, если не существует ничего, требующего полностью определенного типа (§14.7.1 / 1).Определения функций, в частности, требуют полных типов (§8.3.5 / 9), но вопрос в том, требует ли это и другая часть стандарта для других объявлений.
Но есть специальное исключение для определений, которое показывает, чтоОбъявления, не являющиеся определениями, действительно отличаются:
Тип параметра или возвращаемого типа для определения функции не должен быть неполным типом класса (возможно, cv-квалифицированным), если определение функции не вложено вспецификация члена для этого класса (включая определения во вложенных классах, определенных внутри класса).
Что особенного в определениях функций внутри спецификаций членов?Поскольку спецификация члена не может объявлять одну и ту же функцию дважды (§9.2 / 1), а тела функций-членов обрабатываются после всех объявлений члена (§3.3.7 / 1.1).По сути, определение вложенной функции-члена обрабатывается как объявление во время первого прохода, а затем определение, как только вся спецификация члена была обработана, и класс завершен (§9.2 / 2).А в п. 8.3.5 / 9 указывается, что неполный класс допустим для этого первого прохода, но не для второго.
Довольно обременительно выполнять исчерпывающий, окончательный поиск правил Стандарта для объявлений функций и их реализации.Но этот пример, хотя и ограниченный функциями-членами и полнотой включающего типа, может быть разумно распространен на другие функции и типы.В любом случае, это довольно хорошее доказательство различия.