como usar next_permutation

Estou tentando arranjar um arranjo de tábuas de tic tac toe. Então eu tenho o seguinte código:

// 5 turns for x if x goes first
std::string moves = "xxxxxoooo";

do {
    std::cout << moves << std::endl;
} while ( std::next_permutation(moves.begin(), moves.end()) );

Mas só gera a string original uma vez. Estou assumindo que cada personagem tem que ser único. Como posso fazer isso?