PDF de programación - ¿Qué podría ser C++17?

Imágen de pdf ¿Qué podría ser C++17?

¿Qué podría ser C++17?gráfica de visualizaciones

Publicado el 28 de Enero del 2019
685 visualizaciones desde el 28 de Enero del 2019
422,9 KB
54 paginas
Creado hace 8a (17/11/2015)
¿Qué podría ser C++17?

¿Qué podría ser C++17?

using std::cpp 2015

J. Daniel Garcia

[email protected]

Grupo ARCOS

Universidad Carlos III de Madrid

18 de noviembre de 2015

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

1/36

¿Qué podría ser C++17?

Aviso

c Esta obra está bajo una Licencia Creative Commons

Atribución-NoComercial-SinDerivar 4.0 Internacional.

b Debes dar crédito en la obra en la forma especificada

por el autor o licenciante.

e El licenciante permite copiar, distribuir y comunicar pú-
blicamente la obra. A cambio, esta obra no puede ser
utilizada con fines comerciales — a menos que se ob-
tenga el permiso expreso del licenciante.

d El licenciante permite copiar, distribuir, transmitir y co-
municar públicamente solamente copias inalteradas de
la obra – no obras derivadas basadas en ella.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

2/36

¿Qué podría ser C++17?

Estado actual

1 Estado actual

2 Cambios menores

3 Conceptos

4 Paralelismo y concurrencia

5 Programación basada en contratos

6 Corrutinas

7 Módulos

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

3/36

¿Qué podría ser C++17?

Estado actual

Estructura del comité

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

4/36

¿Qué podría ser C++17?

Estado actual

Planes

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

5/36

¿Qué podría ser C++17?

Estado actual

¿Cómo será C++ después de 2017

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

6/36

¿Qué podría ser C++17?

Estado actual

¿Cómo será C++ después de 2017

Difícil de saber.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

6/36

¿Qué podría ser C++17?

Estado actual

¿Cómo será C++ después de 2017

Difícil de saber.

Mucho trabajo en marcha.
Requiere alcanzar consensos.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

6/36

¿Qué podría ser C++17?

Estado actual

¿Cómo será C++ después de 2017

Difícil de saber.

Mucho trabajo en marcha.
Requiere alcanzar consensos.

¿Será C++ una major release?

No está claro si se mira únicamente a la norma 14882.
Pero se debe mirar también a las TS que la acompañan.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

6/36

¿Qué podría ser C++17?

Estado actual

Estado

Norma ISO/IEC 14882

Previsible Draft en junio de 2016.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

7/36

¿Qué podría ser C++17?

Estado actual

Estado

Norma ISO/IEC 14882

Previsible Draft en junio de 2016.

File System: ISO/IEC TS 18822:2015

Manipulación de archivos y directorios.
Basado en Boost Filesystem V3.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

7/36

¿Qué podría ser C++17?

Estado actual

Library fundamentals

Library Fundamentals: ISO/IEC TS 19568:2015.

Primera versión completada (espacio std::experimental).

Clases optional y any.
Vista sobre cadena string_view.
Allocators polimórficos (std::experimental::pmr).
Soporte para arrays en shared_ptr y weak_ptr.
Nuevos algoritmos sample() y de búsqueda.
Función apply().

Se está trabajando en una segunda versión.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

8/36

¿Qué podría ser C++17?

Estado actual

Concurrencia y paralelismo

Paralelismo: ISO/IEC TS 19570:2015.

Solución de biblioteca para el paralelismo.
Ofrece muchos algoritmos de la STL de forma paralela y
varias políticas de ejecución
Se está trabajando en una segunda versión.
Paralelismo de tareas con modelo fork-join.
Múltiples políticas de planificación (parent-stealing,
child-stealing, . . . ).

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

9/36

¿Qué podría ser C++17?

Estado actual

Concurrencia y paralelismo

Paralelismo: ISO/IEC TS 19570:2015.

Solución de biblioteca para el paralelismo.
Ofrece muchos algoritmos de la STL de forma paralela y
varias políticas de ejecución
Se está trabajando en una segunda versión.
Paralelismo de tareas con modelo fork-join.
Múltiples políticas de planificación (parent-stealing,
child-stealing, . . . ).

Concurrencia: ISO/IEC TS 19571:XXXX.
Extensiones de concurrencia para C++.
Mejora a std::future y APIs asociadas.
latches y barreras reusables.
Punteros inteligentes de tipo atómico (atomic_shared_ptr y
atomic_weak_ptr).

Publicación inminente (2015 o 2016).

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

9/36

¿Qué podría ser C++17?

Estado actual

Memoria transaccional

Memoria transaccional: ISO/IEC TS 19841:2015.

Ofrece aproximación distinta para evitar condiciones de
carrera.
Evita el uso de cerrojos y otros mecanismos de
sincronización.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

10/36

¿Qué podría ser C++17?

Estado actual

Redes

Library Fundamentals: ISO/IEC TS 19216:XXXX.

Primera versión en marcha(espacio
std::experimental::net).

Entrada/salida asíncrona.
Temporizadores.
Búfers y flujos orientados a búfer.
Sockets y direcciones de red.

En proceso (2016/2017?)

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

11/36

¿Qué podría ser C++17?

Estado actual

Conceptos y Rangos

C++ extensions for concepts: ISO/IEC TS 19217:2015.
Permite restringir los tipos con los que se instancia una
plantilla.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

12/36

¿Qué podría ser C++17?

Estado actual

Conceptos y Rangos

C++ extensions for concepts: ISO/IEC TS 19217:2015.
Permite restringir los tipos con los que se instancia una
plantilla.

Especificación Técnica para Rangos: ISO/IEC TS
YYYYY:XXXX.

Añade el concepto de rango para operar sobre un conjunto
de datos.
Hace uso de la especificación de conceptos en su
definición.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

12/36

¿Qué podría ser C++17?

Cambios menores

1 Estado actual

2 Cambios menores

3 Conceptos

4 Paralelismo y concurrencia

5 Programación basada en contratos

6 Corrutinas

7 Módulos

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

13/36

¿Qué podría ser C++17?

Cambios menores

Eliminando cosas antiguas

auto_ptr
random_shuffle
Partes obsoletas de <functional>.
register.
operator++(bool).
Alias de iostreams obsoletos (ej: ios_base::io_mode,
. . . ).

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

14/36

¿Qué podría ser C++17?

Cambios menores

Otras mejoras en la biblioteca

Concepto de iterador contiguo.
Mejoras en conversiones unique_ptr<T[]>.
Mejoras en las especificaciones noexcept de la biblioteca
estándar.
Mejoras en la inserción en mapas (try_emplace()).
Nuevo tipo void_t.
Función global size() (size(x) → x.size()).
Constructores implícitos de tuple y pair.
Nuevo tipo bool_constant<val>.
Nuevo mutex shared_mutex (problema de los múltiples
lectores).

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

15/36

¿Qué podría ser C++17?

Cambios menores

Otras mejoras en la biblioteca

Traits de valor (ej: is_scalar_v<T>, is_arithmetic_v<T>,
. . . ) tomados de TS emphlibrary fundamentals.
Funciones sobre tiempos de chrono (floor, ceil, round,
abs).
Función as_const(x).
lock_guard<> ahora acepta múltiples mutex (variadic).

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

16/36

¿Qué podría ser C++17?

Cambios menores

Otros cambios

Las especificaciones de excepciones pasan a ser parte del
sistema de tipos.
Nueva directiva __has_include().

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

17/36

¿Qué podría ser C++17?

Conceptos

1 Estado actual

2 Cambios menores

3 Conceptos

4 Paralelismo y concurrencia

5 Programación basada en contratos

6 Corrutinas

7 Módulos

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

18/36

¿Qué podría ser C++17?

Conceptos

Conceptos

Objetivo: Hacer al programación genérica más simple.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

19/36

¿Qué podría ser C++17?

Conceptos

Conceptos

Objetivo: Hacer al programación genérica más simple.

Un largo camino.

Un nuevo comienzo después de la retirada de C++11.
Una de las características más revisadas que conozco.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

19/36

¿Qué podría ser C++17?

Conceptos

¿Por qué?

Especificación de restricciones sobre argumentos de
plantilla en la declaración.
Sobrecarga de funciones genéricas usando restricciones.
Especialización parcial de plantillas de clases y de
variables usando restricciones.
Nueva sintaxis para especificar conceptos y aplicar
restricciones a plantillas.
Sintaxis simplificada para plantillas.
Mejora sustancial de mensajes de error.

c b e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected] – @usingstdcpp – @jdgarciauc3m)

20/36

¿Qué podría ser C++17?

Conceptos

¿Qué podría pasar?

Es probable que el próxima reunión (marzo 2016) se
discuta su incorporación a ISO/IEC 14882.

Puede ser un debate no exento de polémicas.

Posiciones divergentes dentro del comité.
Necesidad de consenso.

En mi opinión, se han incor
  • Links de descarga
http://lwp-l.com/pdf15000

Comentarios de: ¿Qué podría ser C++17? (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad