Как я могу расширить лексическое приведение для поддержки перечислимых типов?

У меня есть следующая функция, которая преобразует строку в числовой тип данных:

template 
bool ConvertString(const std::string& theString, T& theResult)
{
    std::istringstream iss(theString);
    return !(iss >> theResult).fail();
}

Однако это не работает для перечислимых типов, поэтому я сделал что-то вроде этого:

template 
bool ConvertStringToEnum(const std::string& theString, T& theResult)
{
    std::istringstream iss(theString);
    unsigned int temp;
    const bool isValid = !(iss >> temp).fail();
    theResult = static_cast(temp);
    return isValid;
}

(Я'сделав предположение, что theString имеет допустимое значение для перечисляемого типа; Я'использую это в основном для простой сериализации)

Есть ли способ создать одну функцию, которая сочетает в себе обе эти функции?

мы немного поигрались с аргументами шаблона, но поканичего не придумаешь; Это'просто было бы неплохо не вызывать одну функцию для перечисляемых типов и другую для всего остального.

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос