¿Por qué mi matemática de enteros con std :: pow está dando la respuesta incorrecta?

Considere la siguiente pieza 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;
}

Da salida a "122" en lugar de "123". ¿Es un error en g ++ 4.7.2 (MinGW, Windows XP)?

Respuestas a la pregunta(5)

Su respuesta a la pregunta