¿Los punteros a los literales de cadena siguen siendo válidos después de que se devuelve una función?

¿Es válido el puntero devuelto por la siguiente función?

const char * bool2str( bool flg )
{
    return flg ? "Yes" : "No";
}

Funciona bien en Visual C ++ y g ++. ¿Qué dice el estándar de C ++ sobre esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta