Это утверждение из стандарта 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: неявное создание шаблона, хотя шаблонный конструктор не используется