Шаблоны классов никогда не создаются неявно. Учитывая определение класса, которое вы дали, вы должны сказать:
convert<int>(0)
... чтобы вызвать конструктор этого класса.
С аргументами шаблона по умолчанию вы можете улучшить (?) Его до:
template <class FromType = int>
struct convert
{ /* ... */ };
, а затем вызвать его как:
convert<>(0)
... но, боюсь, это лучшее, что вы можете сделать с помощью шаблона класса. Вместо этого вы можете захотеть использовать шаблон функции, который создает для вас объекты класса:
template <typename FromType>
convert<FromType> make_convert(FromType from) {
return convert<FromType>(from);
}
Это более или менее подход, используемый, например, в std :: make_pair ().