Tu definición no me parece correcta. Un modismo es una forma de escribir algo que puede o no ser posible en otros idiomas, pero que es común en este idioma. Por lo general, es más corto que la alternativa, pero eso no es realmente un requisito.
Puede ser más fácil explicarlo hablando de lo que no es idiomático. En C ++, es bastante idiomático escribir:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p)
{
// whatever
}
Es aún más idiomático escribir:
Foo* p;
if(p = SomeThingThatReturnsAFooPointer(arg, param, x, y))
{
// whatever
}
Este código hace exactamente lo mismo: algunas personas que son nuevas en C ++ podrían leerlo como prueba para ver si p es igual a lo que devuelve la función, pero eso no es lo que hace.
Compare con lo que alguien podría escribir, de manera no idiomática, que ha venido de otro idioma:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p !=NULL)
{
// whatever
}
También verás estas cosas como no idiomáticas:
if (x>0)
return true;
else
return false;
Porque el enfoque idiomático es
return (x>0);
Las formas no idiomáticas no están mal, pero por lo general tardan más en escribir y siempre tardan más en leer, para aquellos que conocen los modismos. Si te llamo "el niño que lloró lobo" y conoces la historia, es más rápido que si te explico cómo las falsas alarmas hacen que la gente te ignore. El problema, por supuesto, es si no conoces la historia y no sabes qué tienen que ver los lobos con lo que estamos hablando. Del mismo modo, puede ser un problema si nunca return x<y;
antes has visto y realmente no sabes lo que hace.