На практике одиночный шаблон создается с помощью простой статической функции, которая возвращает одну локальную статическую переменную.Пока экземпляр является статическим, он возвращает одну и ту же переменную, определенную один раз во время первого вызова функции.
Меня сбивает с толку то, что если я объявляю обычную статическую функцию со статической локальной переменной в одном файле заголовка и включаю этот заголовок в два разных блока перевода, когда они вызывают эту функцию, локальная статическая переменная функции создается дважды -каждый для каждой единицы перевода.
Причина в том, что при статическом идентификаторе функции функция связывания является внутренней, поэтому для каждой единицы перевода (исходного файла) существует два экземпляра этих функций, и, следовательно, для этой статической переменной есть два локальных экземпляра.
Мой вопрос: почему эта же логика не применима к одноэлементному шаблону?Когда мы объявляем статическую функцию, почему она не внутренне связана и, следовательно, почему она не создает два экземпляра локальной статической переменной (которая по определению является единственным экземпляром синглтона)?
основная функция синглтона, о которой я говорюо:
static className& instance() { static className instance; return instance; }