Код: Выделить всё
//Tpl.h
template
void show(T){
}
< /code>
// a translate unit
#include "Tpl.h"
void h(){
show(0); //implicitly instantiate specialization for show
}
< /code>
// b translate unit
#include "Tpl.h"
int main(){
show(0); //implicitly instantiate specialization for show
}
правило odr не упоминается. /> basic.def.odr#6
может быть более одного определения < /strong> типа класса, типа перечисления, встроенной функции с внешней связью ([dcl.inline]), встроенная переменная с внешней линейкой ([dcl.inline], Template Class-Template, STATICE-STATICE, STITICE DIPTATE, STITICE FOMENTATE, STITICE FOMENTATE, STITICE FOMENTATE, STITICE FOMENTATE, STITICE FOMENTATE, STITICE FOMENTATE, STITICE FOMENTATE, состо. шаблона класса, или специализации шаблона, для которой некоторые параметры шаблона не указаны ([[temp.spec], [temp.class.spec]) в программе при условии, что каждое определение появляется в различной единице перевода и предоставила определения удовлетворяют следующие требования. Учитывая такую сущность с именем D, определенную в более чем одной единице перевода, то < /p>
< /blockquote>
Случай, указанный правилом, следующие: < /p>
Тип класса < /li>
< /> < /li>
/> Шаблон класса < /li>
Нестатический шаблон функций < /li>
Статический элемент данных шаблона класса < /li>
Функция элемента класса шаблона < /li>
Специализация шаблона, для которой некоторые параметры шаблона не являются определенными < /li>
/>
Итак, как насчет шаблона функции или статического шаблона функции члена ? Или есть другие специальные правила, применяемые к этому делу?
Подробнее здесь: https://stackoverflow.com/questions/627 ... a-template
Мобильная версия