Рассмотрим этот шаблон с неявным конструктором
template<typename T>
struct X { X(T) { } };
и этот шаблон функции
template<typename T>
void func(X<T>) { }
Даже если я сделаю явное создание экземпляра func<T>()
для T = int
template void func<int>(X<int>);
Такой вызов func
не компилируется
func(1);
Ошибка:
нет соответствующего вызова функции для 'fun c'
Я знаю, что вывод аргументов шаблона не очень хорошо работает с преобразованиями, но в этом случае я создаю явное создание экземпляра func
, поэтому нет необходимости в выводе, и я ожидаю, что преобразования будут работать как с обычными функциями .
Почему не работает?