#include <iostream>

template<typename RvalT, typename Iter>
RvalT getHex(Iter first, Iter last)
{
    RvalT rval = 0;
    
    for(RvalT base_mul = 1 ; last != first ; base_mul *= 16)
        rval += base_mul * (*--last - '0');

    return rval;
}

int main()
{
    std::string tst = "121";
    std::cout << getHex<int>(tst.begin(), tst.end());
}