Por que minha matemática inteira com std :: pow está dando a resposta errada?

Considere o seguinte trecho de código:

#include <iostream>
#include <cmath>

int main() {
    int i = 23;
    int j = 1;
    int base = 10;
    int k = 2;
    i += j * pow(base, k);
    std::cout << i << std::endl;
}

Emite "122" em vez de "123". É um bug no g ++ 4.7.2 (MinGW, Windows XP)?

questionAnswers(5)

yourAnswerToTheQuestion