c++ - keywords - meta tags importantes
¿Por qué la palabra clave de restricción no es parte de C++? (2)
Hay varios problemas al definir "restringir" en C ++, algunos de ellos se enumeran en el documento WG N3635: open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3635.pdf " Hacia la semántica restrict-like para C ++ "
Algunos problemas posibles con restringir en C ++ son:
- Restringir miembros de clase e indirección con "este puntero"
- Paso de restringir calificadores a funciones, funtores, lambdas y plantillas
- Escape de valores de puntero restringido dentro de funciones
- Superposición de miembros de la matriz, avances
El documento también enumera varios compiladores de C ++ con soporte limitado de "restringir" para C ++.
También hay una nota histórica interesante en N3635 sobre la no inclusión de restringir a C ++:
En el momento de revisar la inclusión de C99 en C ++ durante la reunión de Mont Tremblant, se consideró restringir pero estaba esperando una propuesta en papel, aunque no se presentó ninguna ...
Restrict es una característica de C99 y nunca fue diseñado para funcionar en abstracciones de clase y puede tener que ver con que los punteros no son comunes en C ++. ... fue diseñado para el aliasing de grano fino para C, pero no está bien diseñado para el aliasing basado en tipos en C ++
El título lo dice todo. Tengo curiosidad ¿por qué la palabra clave de restricción no es parte de C ++? No sé mucho acerca de C ++, y aún no puedo encontrar nada en línea que pueda dar una razón para bloquear esto. ¿Alguien sabe qué cosas terribles ocurrirían si un estándar de C ++ usara esta palabra clave de manera similar a como lo hace C? ¿No es necesario en absoluto?
Más explicación: no se trata de usarlo, quizás no obtendré ningún beneficio de esta palabra clave en toda mi vida. Esta pregunta es solo por curiosidad, ya que restringir es parte de C desde C99, es decir, 15 años.
Lea esto también: estoy interesado en razones técnicas, no en opiniones como "simplemente no les gustó, no es lo suficientemente bueno"
No para restar valor a la respuesta de osgx, pero - hay un artículo algo más actualizado, N3998 de Finkel, Tong, Carrouth, Nelson Vandevoode y Wong, desde mayo de 2014:
Hacia la semántica de aliasing de restricción-como para C ++
Sin embargo, todavía está bastante lejos.