Запутались в неявном создании экземпляра шаблона

Это утверждение из стандарта C ++ 03, §14.7.1p5:

Если процесс разрешения перегрузки может определить правильная функция для вызова без создания экземпляра определения шаблона класса, это не указано, действительно ли имеет место это создание. [ Пример:

 template  struct S {
 оператор int ();
};

void f (int);
void f (S  &);
void f (S );

void g (S  & sr) {
f (ср); // создание экземпляра S  разрешено, но не обязательно
 // создание экземпляра S  разрешено, но не обязательно
};

- конечный пример ]

Я не могу понять этот момент. Есть ли у него неопределенное поведение?

Я обнаружил другую аналогичную проблему , которую я тоже не понимаю. Там объясняется, что правильное поведение не определено, но что это означает?

здесь: MSVC: неявное создание шаблона, хотя шаблонный конструктор не используется

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