Requisitos denominados de C++: TipoDeDiseñoEstándar
De cppreference.com
Especifica que un tipo es un tipo de diseño estándar. Los tipos de diseño estándar son útiles para comunicarse con código escrito en otros lenguajes de programación.
Nota: el estándar no define un requisito denominado con este nombre. Esta es una categoría de tipo definida por el lenguaje central. Se incluye aquí como un requisito con nombre solamente por consistencia.
Contenido |
[editar] Requisitos
- Todos los datos miembro no estáticos tienen el mismo control de acceso.
- No tiene funciones virtuales o clases base virtuales.
- No tiene datos miembro no estáticos de tipo referencia.
- Todos los datos miembro no estáticos y las clases base son tipos de diseño estándar.
|
(hasta C++14) |
struct Q {}; struct S : Q { }; struct T : Q { }; struct U : S, T { }; // no es una clase de diseño estándar: // dos subobjetos de clase base de tipo Q
struct B { int i; }; // clase de diseño estándar struct C : B { }; // clase de diseño estándar struct D : C { }; // clase de diseño estándar struct E : D { char : 4; }; // no es una clase de diseño estándar
|
(desde C++14) |
[editar] Propiedades
Véase Diseño estándar.
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
CWG 1672 | C++14 | La regla del primer dato miembro no estático ignoraba la existencia de clases base vacías. |
La regla del primer dato miembro no estático se hizo recursiva. |
CWG 1813 | C++14 | Una clase con un miembro definido en una base indirecta técnicamente no era de diseño estándar. |
Todas las declaraciones de miembros tienen que estar en la misma clase. |
CWG 2120 | C++14 | No se consideró un array como el primer miembro al comparar el tipo del primer elemento con el tipo de una base. |
Los arrays miembro se consideran. |
[editar] Véase también
(C++11) |
Comprueba si un tipo es un tipo de diseño estándar. (plantilla de clase) |