>>958
テンプレート(やクラスやインライン関数など)の定義は、実用上ヘッダに書いて複数の翻訳単位で
定義しないといけないので、定義の重複を認めている。
(字句的に同一であることを含めていくつかの常識的な制約はある。)

そういった特例に含まれないものの定義をヘッダに書くと複数の翻訳単位に定義が含まれ、
定義が重複することになる。 ODR(One Definition Rule) 違反ってやつで、結果は未定義。
一般的な実装ではリンクエラーとして検出される。


この特例に含まれるという点ではテンプレートとinline関数は同様だけど、関数テンプレートが
自動的にinlineとみなされるわけじゃない。

ODR はプログラム全体に「定義」がいくつ含まれるか、という話。
「実体」とか言ってるとテンプレートインスタンスとごっちゃになったりするのでやめといたほうがいい。