Что должно произойти со статическими переменными-членами класса шаблона с определением в файле .h

Если определение класса шаблона содержит статическую переменную-член, которая зависит от типа шаблона, я не уверен, каким должно быть надежное поведение?

В моем случае желательно поместить определение этого статического члена в тот же файл .h, что и определение класса, поскольку

  1. я хочу, чтобы класс был общим для многих типов данных шаблона, которые я в настоящее время не знать.
  2. Я хочу, чтобы был открыт доступ только к одному экземпляру статического члена в моей программе для каждого данного типа шаблона. (один для всех MyClass и один для всех MyClass и т. д.

Я могу быть очень кратким, если скажу, что здесь указан код ссылка ведет себя точно так, как я хочу, при компиляции с gcc 4.3. Соответствует ли это поведение стандарту C ++, чтобы я мог полагаться на него при использовании других компиляторов?

Эта ссылка не мой код, а размещенный контрпример автор CodeMedic к обсуждению здесь . Я нашел несколько других дискуссий, подобных этой , , но ничего не считаю окончательным.

Я думаю, что компоновщик объединяет найдены несколько определений (в примере ao и bo ). Это обязательное / надежное поведение компоновщика?

11
задан Community 23 May 2017 в 12:01
поделиться