Como sair de um loop de dentro de um switch?

Eu estou escrevendo algum código que se parece com isso:

while(true) {
    switch(msg->state) {
    case MSGTYPE: // ... 
        break;
    // ... more stuff ...
    case DONE:
        break; // **HERE, I want to break out of the loop itself**
    }
}

Existe alguma maneira direta de fazer isso?

Eu sei que posso usar um sinalizador e interromper o loop, colocando uma pausa condicional logo após a troca. Eu só quero saber se o C ++ já tem alguma construção para isso.

questionAnswers(19)

yourAnswerToTheQuestion