Algunos compiladores de C++ aún admiten la sintaxis en la actualidad, 8 años después de que esta pregunta se realizó originalmente. Me sorprende.
Aprendí Pascal en 2012, Pascal tiene notaciones de rango. Luego, algo me animó a probar la sintaxis similar con C++, luego funciona inesperadamente fabuloso.
El compilador en mi portátil es g ++ (GCC) 6.4.0 (del proyecto Cygwin) std = C++ 17
Hay un ejemplo de trabajo, que escribí en la prisa. repl.it
Además, el código fuente está fijado de la siguiente manera:
#include <iostream>
using namespace std;
#define ok(x) cout << "It works in range(" << x << ")" << endl
#define awry cout << "It does\'t work." << endl
int main() {
/*bool a, b, c, d, e, f, g;
switch(true) {
case (a): break; These does not work any more...
case (b and c): break;
}*/
char ch1 = 'b';
switch(ch1) {
case 'a' ... 'f': ok("a..f"); break;
case 'g' ... 'z': ok("g..z"); break;
default: awry;
}
int int1 = 10;
switch(int1) {
case 1 ... 10: ok("1..10"); break;
case 11 ... 20: ok("11..20"); break;
default: awry;
}
return 0;
}
No. Y debe observar que si está utilizando interruptores, es casi seguro que no está haciendo programación orientada a objetos. –
@Neil: por favor explique. ¿Deberíamos reemplazar todas las expresiones booleanas en un programa con una jerarquía de clases completa? – Coincoin
No. Pero no deberíamos pretender que estamos haciendo OOP - estamos haciendo una programación de procedimiento (desafortunadamente no hay TLA interesante). –