Нет концепции создания экземпляров с не шаблонными классами.Когда компилятор встречает определение функции-члена, определение компилируется сразу.
Независимо от того, выводится ли функция в двоичном файле, зависит от компилятора и ваших настроек.Если вы скомпилируете свою программу как библиотеку, все функции будут реализованы.Если вы используете статическое связывание, компоновщик не добавит неиспользуемые функции в ваш двоичный файл.
Напротив, если вы используете динамическое связывание, все экспортированные определения будут там.Хотя неэкспортированная функция, такая как функция со статическим связыванием, может быть встроена без отдельного определения.
Независимо от того, были ли они фактически сохранены и выведены в двоичный файл, это нечто отдельное от самой компиляции.Например, вы можете создать 100 шаблонных функций, и в действительности ни одна из них не будет выведена в двоичном виде.Это зависит от компоновщика, если ваша функция перейдет в двоичный файл.
Если ваша функция является общедоступным символом, она, вероятно, попадет в двоичный файл.