Что значит «использовать ODR»?

Это только что вышло в контекстеДругой вопрос.

Очевидно, функции-члены в шаблонах классов создаются только в том случае, если они используются ODR. Может кто-нибудь объяснить, что именно это значит.статья в Википедии об одном правиле определения (ODR) Безразлично»не упоминатьODR использование».

Однако стандарт определяет это как

Переменная, имя которой появляется в качестве потенциально оцениваемого выражения:УСО используемый если это не объект, который удовлетворяет требованиям для появления в константном выражении (5.19) и преобразование lvalue-в-значение (4.1) применяется немедленно.

в [basic.def.odr].

Редактировать: очевидно, это неправильная часть, и весь абзац содержит несколько определений для разных вещей. Это может быть релевантным для функции-члена шаблона класса:

Неперегруженная функция, имя которой отображается в виде потенциально оцененного выражения или члена набора функций-кандидатов, если она выбрана разрешением перегрузки при обращении к потенциально оцененному выражению, используется odr, если только она не является чисто виртуальной Функция и ее имя явно не определены.

Я, однако, не понимаю, как это правило работает для нескольких модулей компиляции? Все функции-члены создаются, если я явно создаю шаблон класса?

Ответы на вопрос(2)

Ваш ответ на вопрос