Что именно говорит одно определение в C ++? Единственный надежный случай, который я могу найти, это Язык программирования C ++, третий. изд., с. 9.2.3 . Есть ли официальное определение правила, кроме этого?
Правда в стандарте (3.2 Одно правило определения):
Ни одна единица перевода не должна содержать более одного определения любой переменной, функции, типа класса, типа перечисления или шаблона.* [...] Каждая программа должна содержать ровно одно определение каждой не встроенной функции или объекта , которая используется в этой программе ;Диагностика не требуется.Определение может явным образом появиться в программе, оно может быть найдено в стандартной или пользовательской библиотеке или (при необходимости) неявно определено (см. 12.1, 12.4 и 12.8).Встроенная функция должна быть определена в каждой единице перевода, в которой она используется.
Ни одна единица перевода не должна содержать более одного определения любой переменной, функции, типа класса, типа перечисления или шаблона.*
[...]
Каждая программа должна содержать ровно одно определение каждой не встроенной функции или объекта , которая используется в этой программе ;Диагностика не требуется.Определение может явным образом появиться в программе, оно может быть найдено в стандартной или пользовательской библиотеке или (при необходимости) неявно определено (см. 12.1, 12.4 и 12.8).Встроенная функция должна быть определена в каждой единице перевода, в которой она используется.