Как насчет правила ODR для специализации, которое создавалось из шаблонаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как насчет правила ODR для специализации, которое создавалось из шаблона

Сообщение Anonymous »

Код: Выделить всё

//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
}
Согласно правилам в [temp.inst], существует специализация для шаблона функции Show в и B «Перевод» соответственно, что означает, что в программе

правило 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»