28 votos

¿Por qué es la opción de restringir la palabra clave no es parte de C++?

El título lo dice todo. Tengo curiosidad por qué es el restringir la palabra clave no es parte de C++ ? Yo no sé mucho acerca de C++, y todavía no estoy capaz de encontrar nada en línea que dar una razón de este bloqueo. ¿Alguien sabe qué cosas terribles que pasaría, si un estándar de C++ y utilizar esta palabra clave de manera similar a la forma en que C ¿? Es que simplemente no necesita en absoluto?

Más explicación: no se trata de usar, que tal vez no voy a tener ningún beneficio de esta palabra clave en toda mi vida. Esta pregunta es sólo acerca de la curiosidad, ya que restringir es parte de C a partir de C99, que es de 15 años.

Leer esta así: Estoy interesado en razones técnicas, no opiniones, como "Ellos simplemente no les gusta, no es lo suficientemente fría"

16voto

osgx Puntos 28675

Hay varios problemas en la definición de "restringir" en C++, algunos de ellos figuran en WG papel N3635: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3635.pdf "Hacia restringir-como la semántica de C++"

Algunos posibles problemas con restringir en C++ son:

  • Restringir los miembros de la Clase y direccionamiento indirecto con "este puntero"
  • Pasando de restringir los calificadores en funciones, functors, lambdas, y plantillas
  • Escapar de restringir los valores de puntero dentro de las funciones de
  • La superposición de los miembros de la matriz, avances

El documento también la lista de varios compiladores de C++ con limitada "restringir" soporte para C++.

También hay una historia interesante nota en N3635 acerca de la no-inclusión de restringir a C++:

En el momento de la revisión de C99 función de su inclusión en C++ durante la Mont Tremblant reunión, restringir fue considerado, pero estaba a la espera de una propuesta a pesar de que ninguno se acercó....

Restringir es una C99 característica y nunca fue diseñado para trabajar en la clase de abstracciones y que puede tener que ver con que los punteros no son comunes en C++. ... para la que fue diseñado de grano fino aliasing para C, pero no están bien diseñados para el tipo basada en el aliasing en C++

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X