Hola
goto es un problema solo cuando es mal utilizado, puede que muchas veces hayan opciones mucho mas eficientes (while, for, do...while) pero en ciertos casos hay que utilizarlo.
Estás equivocado, C/C++ son lenguajes de programación estructurados y el GOTO rompe la programación estructurada.
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (
programación estructurada y la programación orientada a objetos).
Programación estructurada
La programación estructurada es una técnica para escribir programas (programación de computadora) de manera clara. Para ello se utilizan únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).
Saludos