2009-05-12 13 views
6

En el current C++0x draft, he notado que introdujeron algunas nuevas palabras clave explícitas para resaltar comportamientos esperados (¡gran jugada!).¿Cómo pedir una pequeña adición? (sintaxis de funciones virtuales puras)

Ejemplos: defaulted/deleted funciones (por defecto = y = borrar), el nuevo nullptr constantes, la palabra clave explicit utilizable también para operadores de conversión, ...

Así que esperaban ver también una = pura sintaxis para funciones virtuales puras.

En su lugar lo feo (en mi humilde opinión) = 0 cosa todavía existe.

Ok, puedo usar un #define pure 0 (y a veces lo hago), pero creo que la coherencia/consistencia debe ser definitivamente un objetivo para un estándar. Por otra parte sé que es sólo una especie de petición de ultra-pedante, pero = 0 era de hecho uno de mi parte que menos le gusta de C++ (eufemismo) ...

Mis preguntas:

  • lo sé, el nuevo estándar es completamente funcional, pero ¿es posible pedir esta pequeña adición pedante, incluso como una cosa de "macro requerido"?
  • si la respuesta es positiva, ¿cómo? (¿Algún miembro del comité alrededor?)
  • ¿Soy demasiado pedante (o incorrecto) para pedir esta adición? ¿Qué piensas sobre la sintaxis actual de funciones virtuales puras?
+0

+1 de mí por cierto. Es una pregunta perfectamente buena, y creo que al comité de estándares le encantaría que más personas se interesen en su trabajo. :) – jalf

+0

Gracias! Como dije en otros comentarios, no soy un experto y acabo de comenzar a leer el último borrador (1347 páginas) ... –

Respuesta

29

Eso no es un pequeño cambio pedante. Introducir una nueva palabra clave es uno de los cambios más grandes que puede solicitar. Es algo que tratan de evitar casi a cualquier costo. Piensa en todo el código que usa la palabra "puro", que se rompería.

En general, su pauta es solo agregar cosas al idioma que no pudo haber hecho antes de.Una palabra clave pure no habilitaría nada nuevo (a diferencia de la palabra clave nullptr, que permite una mejor verificación de tipos, por ejemplo), por lo que se espera que tenga una prioridad muy baja. Tenga en cuenta que todo lo que hacen es básicamente trabajo de mantenimiento. El objetivo n. ° 1 es evitar romper el idioma (o el código existente que lo usa). Las funciones que se agregan solo se agregan si se puede hacer sin romper la compatibilidad con versiones anteriores.

Sin embargo, el comité es más o menos un foro abierto. Busque en su website, y debería poder encontrar algunas direcciones de correo electrónico. O use el grupo de noticias comp.std.c++.

Creo que sus reuniones también están abiertas, por lo que podría bloquear el siguiente. ;)

+0

No soy un experto, pero creo que * = puro *, utilizado en ese contexto, no debe romper nada. De todos modos, sobre el problema "puro como una nueva palabra clave", creo que tienes razón: no consideré ese problema en absoluto ... Gracias. –

+3

Gracias por esta respuesta. Es interesante darse cuenta de que tanto el default como el delete ya eran palabras clave de C++, pero en contextos diferentes. –

+1

Una pregunta sin embargo. Introdujeron "null_ptr" como una nueva palabra clave. Si lo hubieran llamado "indefinido", hubiera sido lógico usarlo para definir funciones virtuales puras, como lo sugirió Gian ... ¿O estoy soñando? :) –

4

Primero, empiece a leer comp.std.c++ newsgroup. Este es el lugar para las discusiones públicas.

En segundo lugar, yo diría que solo la errata se aplicará al borrador actual de C++ 0x, el comité realmente está en las etapas finales.

Si usted es extremadamente entusiasta, haga su propuesta en el grupo de noticias, con una muy buena justificación. Y espera que sea derribado. Las propuestas sustancialmente más útiles (por ejemplo, los módulos) no lo han hecho.

Adición: Si desea que algo como esto progrese, deberá unirse (el comité tiene ANSI) o buscar a alguien en el comité para impulsar su propuesta.

+0

Gracias por su pregunta. Sé que mi "propuesta" es pequeña, pedante, secundaria, ... pero no estoy pidiendo la luna. Quizás estoy equivocado, pero la coherencia y la coherencia son más importantes que la "adición" que estoy pidiendo. –

+0

Usted está pidiendo la luna. Como señaló Jalf, estás pidiendo una nueva palabra clave que no agregue ninguna nueva expresividad. Por cierto, la respuesta de Richard está muerta. Me han derribado antes en las discusiones sobre estándares. No es fatal –

+0

Estoy totalmente de acuerdo con usted (todos) en: "no hay cambio en la expresividad" => "¿por qué cambiar, posiblemente rompiendo material existente?". Puede considerar mi "propuesta" como * pure * (LOL) estética. Me gustaría evitar esto: ... = eliminar; ... = predeterminado; ... = 0; Si mi "propuesta" dice "estás pidiendo la luna", me retiro humildemente (realmente lo siento, no es broma). Gracias! :) –

3

Demasiado tarde. La solicitud de solicitudes finalizó hace un par de años.

(había una página donde se realizaron las presentaciones, pero no puedo encontrar esa lista más.)

+0

Bien, lo intentaré de nuevo, más tarde ... Gracias. –

+0

No se sienta tan mal, otros sugirieron que originalmente. Mis sugerencias fueron: desaprobar int, short, etc. y reemplazar con int8, int16, etc. Y también descartar char y el nuevo tipo de glifo, que sería una clase de plantilla que representa caracteres unicode. –

+0

Creo que los tipos C99 (como int16_t) fueron aceptados en el estándar, pero como typedefs se obtiene al incluir un archivo de encabezado. El comité es muy reacio a introducir nuevas palabras clave, pero los typedefs opcionales son mucho menos propensos a incomodar a nadie. –

5

Lo que odias más sobre C++ es "= 0;" ???

¿Alguna vez ha usado este lenguaje? Hay muchas otras cosas en las que podrías ser mejor gastar tu odio.

<Flame retardant> He usado C++ durante más de 10 años. Para mí, sigue siendo el idioma de elección cada vez que necesito hacer un levantamiento pesado computacional. </Flame retardant>

+0

No es lo peor de este idioma, en mi humilde opinión (6+ años en este idioma) , Por cierto). Pero odio terriblemente esto desde mi primer día con C++ y cuando vi los borradores (este y el anterior) esperaba ver "algo" en este frente. Dicho en otras palabras: creo que esta adición es * tan pequeña * que podría incluirse en el próximo borrador. No esperaba el problema "como una nueva palabra clave" ya que mi "propuesta" estaba restringida solo a una "macro requerida". :) –

+2

Pero una macro causaría aún más problemas. Si fuera una palabra clave, un compilador * podría * limitar el alcance para que no afecte a las variables o funciones denominadas "puras". Pero una macro simplemente los sustituiría * all * por 0. :) – jalf

+0

Sí, es un problema. Hice esta pregunta ofreciendo una propuesta simple, no con una solución perfecta. Lo siento ... ^^ ' –

2

Además de comentario jalf 's acerca de los inconvenientes de la adición de una palabra clave (con la que estoy de acuerdo 100%) también se debe tener en cuenta que en la informática la frase pure function ya tiene un significado. Significa que, dados los mismos parámetros, una función siempre devuelve el mismo valor y no tiene efectos secundarios. Por lo tanto, elegir = pure para indicar una función virtual que debe ser anulada sería una mala elección de sintaxis.

Cuestiones relacionadas