У меня есть простая шаблонная функция, определенная в библиотеке, которую я использую
template<class T>
T create(std::vector<char>& data)
{
T newValue{};
/* Do something with data */
return newValue;
}
и я хочу специализировать эту функцию в случае, если T реализует определенный интерфейс
template<class T>
std::enable_if_t<std::is_base_of<Interface, T>::value, T> create( std::vector<char>& data)
{
T newValue{};
newValue.InterfaceFunction(data);
return newValue;
}
но я не могу сделать эту работу, специализированная функция не используется. Как я могу добиться специализации уже определенной шаблонной функции?