У меня есть два шаблона.Тип шаблона дедукции не работает в C++
Первый для целого
template <class T>
T myMin(T a, T b)
{
return (a < b) ? a : b;
}
Второй один для строки
template <class TypeFrom, class TypeTo>
TypeTo convert(TypeFrom &from)
{
return static_cast<TypeTo>(from);
}
template <>
std::string convert<std::wstring, std::string>(std::wstring &from)
{
return std::string(from.begin(), from.end());
}
Первый шаблон можно использовать без использования типов
int c = myMin(1,2);
Но для второй шаблон Я должен использовать типы
std::string st = convert<std::wstring, std::string>(sw);
я не могу использовать его без:
std::string st = convert(sw); // this fails with the error "no accordance found for convet<TypeFrom, TypeTo>(wstring)"
Любая идея, почему это?
Я вижу! Благодаря. Это означает, что я должен пропустить оператор = и использовать возвращаемый тип/значение в качестве другого параметра. –
Всегда есть 'auto' (в C++ 11):' auto st = convert (sw); '. –
CompuChip
Есть ли веская причина, почему Бьярне Страуступ не считает тип возврата для вычета функции? –