title: Diez Mandamientos en el catolicismo

text: Aunque los católicos sean frecuentemente acusados de adorar a las imágenes, en violación del primer mandamiento, la Iglesia dice que esto es un malentendido. Según la opinión de la Iglesia, "El honor tributado a las imágenes sagradas es una “veneración respetuosa”, no una adoración, que solo corresponde a Dios". En los primeros siglos de la Iglesia, surgieron grandes discusiones sobre si los iconos religiosos estaban prohibidos por el primer mandamiento. La disputa se limita casi exclusivamente a la Iglesia de Oriente, los "iconoclastas" quisieron prohibir los iconos, mientras que los iconódulos apoyaban su veneración. En el Segundo Concilio de Nicea en el 787, el concilio ecuménico determinó que la veneración de los iconos y las estatuas no estaba en violación de la orden y declaró que "el que venera una imagen, venera al que en ella está representado". En la época de controversia sobre la iconoclastia, la Iglesia Occidental pasó a usar esculturas monumentales, que por el arte románico se convirtieron en una de las principales características del arte cristiano occidental, que se mantuvo parte de la tradición católica, en contraste con el cristianismo oriental, que evita grandes esculturas religiosas. El catecismo postula que Dios dio permiso para las imágenes que simbolizan la salvación cristiana, dejando símbolos como la serpiente de bronce, y los querubines sobre el Arca de la Alianza. Se dice que "El Hijo de Dios, al encarnarse, inauguró una nueva economía de las imágenes".


title: Diez Mandamientos en el catolicismo

text: La Conferencia de los Obispos Católicos de los Estados Unidos (USCCB) explica el catecismo en su libro titulado "Catecismo de los Estados Unidos para Adulto", publicado en 2006. Con respecto a las imágenes grabadas, exponen que este mandato aborda la idolatría que en la antigüedad se expresaba en la adoración de tales cosas como "sol, luna, estrellas, árboles, toros, águilas y serpientes", así como "emperadores y reyes". Explican que hoy, la idolatría se expresa en la adoración de otras cosas, y enumeran algunas como el "poder, dinero, materialismo y deportes".


title: Diez Mandamientos en el catolicismo

text: El segundo Mandamiento prohíbe el uso del nombre de Dios en vano. Muchas culturas antiguas creían que los nombres eran sagrados, en algunas había prohibiciones de cuando el nombre de una persona podía ser hablado. El Evangelio de Juan relata un incidente en el que un grupo de judíos intentaron apedrear a Jesús después de que usara un nombre sagrado de Dios para referirse a sí mismo. Interpretaron su declaración como un reclamo de divinidad. Dado que no creían que él era Dios, consideraron este hecho como una blasfemia, que bajo la ley mosaica conlleva una pena de muerte. Kreeft escribe que todos los nombres por los cuales Dios es conocido son sagrados, y por lo tanto todos los nombres están protegidos por el segundo mandamiento. El "Catecismo" dice, "el respeto a su Nombre expresa la que es debida al misterio de Dios mismo y a toda la realidad sagrada que evoca". El "Catecismo" también requiere el respeto de los nombres de las personas, por respeto a la dignidad de la persona.


title: Diez Mandamientos en el catolicismo

text: El sentimiento detrás de este Mandamiento es más codificado en la Oración del Señor, que comienza así: "Padre nuestro que estás en los cielos, santificado sea tu nombre". Según el papa Benedicto XVI, cuando Dios reveló su nombre a Moisés estableció una relación con la humanidad, Benedicto XVI afirma que la Encarnación fue la culminación de un proceso que "se había iniciado con la entrega del nombre divino". Benedicto XVI explica que esto también puede causar que el nombre divino podría ser mal utilizado y que la inclusión de Jesús de "santificado sea tu nombre" sea un motivo para la santificación del nombre de Dios, para "proteger el maravilloso misterio de su accesibilidad a nosotros, y constantemente afirmar su verdadera identidad frente a nuestra distorsión".


title: Diez Mandamientos en el catolicismo

text: Según la doctrina católica, este mandamiento no se opone a la utilización del nombre de Dios en la toma de juramentos solemnes administrados por la autoridad legítima. Sin embargo, mentir bajo juramento, invocando el nombre de Dios para propósitos mágicos, o expresar palabras de odio o rebeldía contra Dios, se consideran pecados de blasfemia.


title: Diez Mandamientos en el catolicismo

text: Citando al rabino judío y erudito Jacob Neusner, el Papa Benedicto XVI explica que para Israel este Mandamiento era más un ritual que un mandamiento, puesto que era una manera de imitar a Dios, que descansó el séptimo día después de la creación. Asimismo, constituye el núcleo del orden social.


title: Diez Mandamientos en el catolicismo

text: A pesar de que algunas denominaciones cristianas siguen la práctica judía de observar el "sabbat" el sábado, los católicos, junto con la mayoría de los cristianos, aprecian el domingo como un día especial, que ellos llaman el "Día del Señor". Esta práctica se remonta al siglo I, derivados de su creencia de que Jesús resucitó de los muertos el primer día de la semana." La "Didaché" pide a los cristianos que se reúnan en el Día del Señor para partir el pan y dar gracias. Tertuliano es el primero en mencionar el descanso dominical: "Nosotros, sin embargo (así como la tradición nos ha enseñado), el día de la Resurrección del Señor no solo se debe no estar de rodillas, sino que cada postura y oficinas de solicitud, aplazando incluso nuestros negocios para que no le demos un lugar al diablo".


title: Diez Mandamientos en el catolicismo

text: En el siglo VI, San Cesáreo de Arlés enseñó que toda la gloria del Sabbath judío había sido trasladada al domingo y que los cristianos deben guardar el domingo como a los Judíos se les ordena guardar el sábado, pero el Concilio de Orleans en el 538 reprobó esta tendencia como judía y no cristiana.


title: Diez Mandamientos en el catolicismo

text: Los líderes de la Iglesia de los siglos posteriores al descanso dominical inscritos en la enseñanza oficial de la Iglesia, y los gobiernos cristianos han intentado aplicar el descanso dominical a lo largo de la historia. Para los católicos, la enseñanza de Jesús fue que "el sábado se hizo para el "bien" del hombre, y no el hombre para el sábado" respecto a las buenas obras "cuando las necesidades de otros lo exigen" pueden ser parte del día de descanso. El Catecismo ofrece pautas sobre cómo vivir el Día del Señor, que incluyen asistir a misa los domingos y días santos de obligación. En estos días, los católicos pueden no trabajar o realizar actividades que "impidan el culto debido a Dios", pero "la realización de las obras de misericordia y relajación adecuada en un espíritu de alegría" están permitidos.


title: Diez Mandamientos en el catolicismo

text: Según la USCCB, este mandamiento "se ha concretado para los católicos" como el primero de los cinco mandamientos de la Iglesia. Esta conferencia Episcopal cita la encíclica papal "Dies Domini" (1998) de Juan Pablo II:


title: Diez Mandamientos en el catolicismo

text: El Papa Benedicto XVI afirmó que el rabino Neusner "ve correctamente este mandamiento como el ancla en el corazón del orden social". Este mandamiento fortalece las relaciones generacionales, hace explícita la conexión entre el orden familiar y la estabilidad social, y revela que la familia es "querida y protegida por Dios." Porque el amor incondicional de los padres para con sus hijos, conforme a las enseñanzas de la Iglesia, reflejan el amor de Dios y también porque ellos tiene el deber de pasar la fe a sus hijos, el "Catecismo" llama a la familia "una iglesia doméstica", "una comunidad privilegiada" y la "célula original de la vida social".


title: Diez Mandamientos en el catolicismo

text: El "Catecismo" dice que este mandamiento exige deberes de los hijos a sus padres que incluyen:


title: Diez Mandamientos en el catolicismo

text: De acuerdo con el "Catecismo", ese mandamiento también requiere obligaciones por parte de los padres para con sus hijos, entre las cuales se incluyen:El Evangelio de Mateo relata que cuando alguien le dice a Jesús "he aquí tu madre y tus hermanos están afuera, y te quieren hablar", Jesús les respondió diciendo: "¿Quién es mi madre, y quiénes son mis hermanos? Y extendiendo su mano hacia sus discípulos, dijo: He aquí mi madre y mis hermanos. Porque todo aquel que hace la voluntad de mi Padre que está en los cielos, ése es mi hermano, y hermana, y madre." El Papa Benedicto XVI afirma que Jesús llevó hasta el cuarto mandamiento a un nivel nuevo y superior. El catecismo cree que al hacer la voluntad de Dios, cualquiera puede convertirse en parte de la familia universal de Jesús y, por consiguiente, de Dios. Así, las responsabilidades del cuarto mandamiento se extendieron a la sociedad y exigen respeto de las "legítimas autoridades sociales". El "Catecismo" especifica los "deberes de los ciudadanos y de las naciones", que Kreeft resume como:


title: Diez Mandamientos en el catolicismo

text: Este mandamiento exige respeto por la vida humana. Conforme a las escrituras, Jesús expandió este mandamiento, pasando a exigir también que los cristianos amen a sus enemigos y eviten la rabia injusta, el odio y la venganza. La base de toda la doctrina católica sobre el quinto mandamiento es la ética de la santidad de la vida, que Kreeft argumentó como filosóficamente opuesta a la ética de la calidad de vida, una filosofía que el caracteriza como introducida por un libro alemán titulado "Die Freigabe der Vernichtung des Lebensunwerten Lebens" (en español: "El Permiso para Destruir Una Vida Indigna De Ser Vivida"). Kreeft afirmó que este libro fue el primero "que ganó la aceptación del público ... por médicos alemanes antes de la Segunda Guerra Mundial — la base y el inicio de prácticas médicas nazis" y eutanásicas. Esta interpretación es generalmente apoyada por revistas médicas modernas que discuten e informan los dilemas colocados por estas filosofías opuestas a los médicos, que muchas veces necesitan tomar decisiones de vida o muerte.Sin embargo, hay expertos en bioética que caracterizan el uso de la "analogía nazi" como inadecuada y "horrorosamente mala", cuando se aplican las decisiones a la calidad de vida. Cumpliendo el quinto mandamiento, la Iglesia católica está activamente involucrada en debates públicos sobre el aborto, la pena de muerte y la eutanasia, y anima a sus fieles para apoyar las leyes y políticas descritas como pro vida.


title: Diez Mandamientos en el catolicismo

text: Carmona Campo considera que, contrario a una ética laica, que sostiene que la vida es un derecho del sujeto, en la ética cristiana la vida es un don o concesión de Dios que puede retirar cuando él considere conveniente.


title: Diez Mandamientos en el catolicismo

text: El "Catecismo" afirma que "La vida humana ha de ser tenida como sagrada, porque desde su inicio es fruto de la acción creadora de Dios y permanece siempre en una especial relación con el Creador, su único fin. La Iglesia afirma que solo Dios es Señor de la vida desde su comienzo hasta su término; nadie, en ninguna circunstancia, puede atribuirse el derecho de matar de modo directo a un ser humano inocente" Matar directa e intencionalmente un ser humano inocente es considerado por la Iglesia un pecado mortal. El asesinato de familiares incluidos "el aborto inducido, el infanticidio, el fratricidio, el parricidio y el asesinato del cónyuge" son considerados crímenes y pecados mortales más graves todavía, "en razón de los lazos naturales que ellos rompen."


title: Diez Mandamientos en el catolicismo

text: La Iglesia reconoce el momento de la concepción como el inicio de la vida humana y hace hincapié que el embrión debe ser "ser defendido en su integridad, cuidado y atendido médicamente en la medida de lo posible, como todo otro ser humano." El aborto inducido fue específica y persistentemente condenado por la Iglesia desde el siglo I. "la colaboración formal" en el aborto inducido incurre en la pena de excomunión "latae sententiae", "esto es, por el hecho mismo de cometer el delito". El "Catecismo" enfatiza que esta sanción no tiene la intención de restringir la misericordia, sino solo en dejar claro la gravedad del crimen y los daños irreparables hechos al niño, sus padres y a la sociedad. "La colaboración formal" en el aborto no se extiende solo a la madre que libremente se somete, sino también a los médicos, enfermeros y auxiliares que directamente participan en el acto. La Iglesia tiene varios proyectos como el proyecto Sacerdotes por la vida y ministerios de reconciliación para aquellos que sinceramente se arrepienten de sus pecados de colaboración formal en el aborto.


title: Diez Mandamientos en el catolicismo

text: El "Catecismo de los Estados Unidos para Adultos" dedica una sección para la fecundación in vitro, células madre embrionarias y clonación en su explicación del quinto mandamiento, porque muchas veces esas técnicas involucran la destrucción de embriones humanos, considerado por la Iglesia una forma de asesinato gravemente pecaminoso. Las investigaciones científicas con células madre embrionarias son consideradas "un medio inmoral para un buen fin" y "moralmente inaceptable." Citando la "Instrucción sobre el respeto a la vida humana naciente y la dignidad de la procreación" de la Congregación para la Doctrina de la Fe, la Conferencia de los Obispos Católicos de los Estados Unidos (USCCB) afirma que "Ninguna finalidad, aunque fuese en sí misma noble, como la previsión de una utilidad para la ciencia, para otros seres humanos o para la sociedad, puede justificar de algún modo las experiencias sobre embriones o fetos humanos vivos, viables o no, dentro del seno materno o fuera de él." Ella observa también que el uso de células madre adultas, que son células obtenidas con el consentimiento de alguien y sin poner en causa la vida del donante, es un campo promisorio de investigación y moralmente aceptable.


title: Diez Mandamientos en el catolicismo

text: También en relación a la reproducción médicamente asistida que implica la "inseminación y fecundación artificial", el "Catecismo de la Iglesia católica" declara que estas técnicas, aún practicadas en el seno de la pareja (o sea, "fecundación artificial homóloga"), "siguen siendo moralmente inaceptables. Disocian el acto sexual del acto procreador. El acto fundador de la existencia del hijo deja de ser un acto por el cual dos personas se dan una a la otra" y «confía la vida y la identidad del embrión al poder de los médicos y de los biólogos, e instaura un dominio de la técnica sobre el origen y sobre el destino de la persona humana. Una tal relación de dominio es en sí contraria a la dignidad y a la igualdad que debe ser común a padres e hijos.»"; y que "solo el respeto por el lazo que existe entre los significados del acto conyugal y el respeto por la unidad del ser humano permite una procreación conforme a la dignidad de la persona".


title: Diez Mandamientos en el catolicismo

text: El quinto mandamiento prohíbe el suicidio, incluyendo el suicidio asistido, y la eutanasia incluso para eliminar el sufrimiento. La doctrina católica define la eutanasia como "una acción o una omisión que, por su naturaleza e intencionalmente, provoca la muerte con el objetivo de eliminar el sufrimiento". La Iglesia considera que los cuidados normales de quien enfrenta una muerte inminente no pueden ser retirados o interrumpidos. Estos cuidados normales se refieren, por ejemplo, a la comida, agua y alivio del dolor, y no incluyen los tratamientos extraordinarios, que son las "intervenciones médicas ya inadecuadas a la situación real del enfermo". Son consideradas inadecuadas "porque no proporcionan los resultados que se podrían esperar o también porque [son] demasiado graves" para los enfermos y sus respectivas familias. Por eso, en situaciones de muerte inminente e inevitable, es moralmente aceptable permitir que los enfermos terminales mueran naturalmente y renuncien a tratamientos extraordinarios "que darían solamente un prolongamiento precario y penoso de la vida e interrumpieran los cuidados normales debidos" habituales. La Iglesia apoya la práctica de los cuidados paliativos, incluyendo el uso de analgésicos y sedantes que, al aliviar el dolor, pueden acortar la vida del enfermo, desde que la muerte no sea "querida, ni como fin ni como medio, pero solamente prevista y tolerada como inevitable".


title: Diez Mandamientos en el catolicismo

text: En los primeros 200 años, los cristianos "se negaron a matar en el servicio militar, en defensa personal o en el sistema judicial", pero todavía no había ninguna posición oficial de la Iglesia sobre la pena de muerte. Cuando la Iglesia fue oficialmente reconocida como una institución pública en el Edicto de Milán (313), a su postura en relación a la pena de muerte fue de tolerancia, pero no de aceptación plena y absoluta. Sin embargo, la pena de muerte tuvo apoyo desde los primeros teólogos católicos: Ambrosio de Milán alentaba a miembros del clero a anunciar y ejecutar la pena de muerte mientras que Agustín de Hipona respondió a las objeciones arraigadas en el quinto mandamiento en su libro "De Civitate Dei". Tomás de Aquino y Duns Scot también argumentaron que las Sagradas Escrituras apoyan a las autoridades civiles a ejecutar la pena de muerte. El Papa Inocencio III exigió que Pedro Valdo y los valdenses aceptasen que "el poder secular puede, sin pecado mortal, ejercer el juicio de la sangre, siempre que castigue con justicia, no por odio, con prudencia, sin precipitación" como requisito previo para la reconciliación con la Iglesia. Paul Suris afirma que las enseñanzas oficiales de la Iglesia no han condenado ni promovido absolutamente la pena capital, pero la tolerancia ha fluctuado a lo largo de los siglos. La Inquisición constituyó el ejemplo más memorable del apoyo de la Iglesia a la pena de muerte, aunque algunos historiadores consideran que este tribunal eclesiástico era más indulgente y aplicaba menos la pena de muerte que los tribunales seculares de aquella época.


title: Diez Mandamientos en el catolicismo

text: El 2 de agosto de 2018, la Iglesia católica adoptó la opinión de que la pena de muerte es inadmisible, porque atenta contra la dignidad del hombre. El Catecismo de la Iglesia Católica proclama que "a la luz del Evangelio" la pena de muerte es "un ataque contra la inviolabilidad y la dignidad de la persona" y se compromete con determinación a su abolición en todo el mundo.


title: Diez Mandamientos en el catolicismo

text: De acuerdo con las enseñanzas de la Iglesia, el respeto por la vida humana exige también el respeto del propio cuerpo, impidiendo los comportamientos poco saludables, el exceso de comida, alcohol, medicamentos y drogas ilegales. La Iglesia también advierte contra el comportamiento opuesto de "preocupación excesiva de la salud y bien estar del cuerpo que 'idolatra' la perfección física, la buena condición física y el éxito en los deportes."


title: Diez Mandamientos en el catolicismo

text: Secuestro, terrorismo, tortura, esterilizaciones, amputaciones, mutilaciones y modificaciones corporales que no sean justificados por razones médicas o terapéuticas están prohibidos por la Iglesia. De acuerdo con el "Catecismo", las sociedades tienen una obligación moral de esforzarse para ofrecer condiciones de vida saludables para todas las personas.


title: Diez Mandamientos en el catolicismo

text: Según el "Catecismo", el entierro de los muertos es una obra de misericordia corporal y "los cuerpos de los difuntos deben ser tratados con respeto y caridad". Por lo tanto, la dispersión de los restos cremados o el entierro en una tumba sin identificación están prohibidos por la Iglesia católica. La donación de órganos, las cremaciones y las autopsias por razones legales y científicas están permitidas. En cuanto a la cremación, la Iglesia la permite siempre y cuando no socave la fe católica en la resurrección de los cuerpos en el Juicio Final.


title: Diez Mandamientos en el catolicismo

text: De acuerdo con lo expresado en la Biblia, en el Sermón del Monte, Jesús recordó el quinto mandamiento ""No matarás"" y, expandiéndolo, prohibió también la rabia, el odio y la venganza. Yendo más lejos, Jesús pidió a sus discípulos que amen a sus enemigos. El "Catecismo" afirma que "El amor a uno mismo sigue siendo un principio fundamental de la moralidad" y, por eso, es "legítimo para hacer valer su propio derecho a la vida". Kreeft dice que la "autodefensa es legítima, por la misma razón que el suicidio no lo es: porque la propia vida es un don de Dios, un tesoro que somos responsables en preservar y defender." El "Catecismo" enseña que "El que defiende su vida no es culpable de homicidio, incluso cuando se ve obligado a asestar a su agresor un golpe mortal" La legítima defensa puede no solo ser un derecho sino un deber para quien es responsable por la vida de los otros. La defensa del bien común exige que el agresor esté imposibilitado de causar daños. Por esta razón, los que tienen autoridad tienen el derecho a usar las armas para repeler a los agresores contra la comunidad que está bajo su responsabilidad.


title: Diez Mandamientos en el catolicismo

text: La Iglesia exige que todos recen y trabajen para evitar guerras injustas, pero permite la guerra justa si fueren atendidas determinadas condiciones:


title: Diez Mandamientos en el catolicismo

text: El "Catecismo" clasifica el escándalo sobre el quinto mandamiento y lo define como una "actitud o comportamiento que lleva a los demás a hacer el mal". En el Evangelio de Mateo, Jesús afirmó que "cualquiera que haga tropezar a alguno de estos pequeños que creen en mí, mejor le fuera que se le colgase al cuello una piedra de molino de asno, y que se le hundiese en lo profundo del mar." La Iglesia considera un pecado y crimen grave causar el debilitamiento de la fe, esperanza y amor de alguien, especialmente si ese alguien fuera un joven y si el agresor fuera una persona de autoridad, como un padre, profesor o sacerdote.


title: Diez Mandamientos en el catolicismo

text: De acuerdo con la Iglesia católica, los humanos son seres sexuales, cuya identidad sexual se extiende más allá del cuerpo, involucrando también la mente y el alma. Los sexos están destinados por designio divino para que sean diferentes y complementarios, ambos con igual dignidad y hechos a la imagen y semejanza de Dios. Los actos sexuales" son sagrados dentro del contexto de la relación conyugal, que refleja un "don mutuo total y temporalmente ilimitado del hombre y de la mujer". Los pecados sexuales, por lo tanto, no violan solo el cuerpo, sino también todo el ser de la persona. En su libro de 1995 "Cruzando el Umbral de la Esperanza", Juan Pablo II hizo una reflexión sobre este asunto:


title: Diez Mandamientos en el catolicismo

text: "Los jóvenes, en el fondo, buscan siempre la belleza del amor, quieren que su amor sea bello. Si ceden a las debilidades, imitando modelos de comportamiento que bien pueden calificarse como «un escándalo del mundo contemporáneo» (y son modelos desgraciadamente muy difundidos), en lo profundo del corazón desean un amor hermoso y puro. Esto es válido tanto para los chicos como para las chicas. En definitiva, saben que nadie puede concederles un amor así, fuera de Dios. Y, por tanto, están dispuestos a seguir a Cristo, sin mirar los sacrificios que eso pueda comportar. "


title: Diez Mandamientos en el catolicismo

text: Al igual que el Judaísmo ortodoxo y el Islam, la Iglesia católica considera todos los actos sexuales fuera del matrimonio como pecados mortales. La gravedad del pecado excluye al pecador de la "comunión sacramental" hasta que él se arrepienta y que sea absuelto en la confesión sacramental.


title: Diez Mandamientos en el catolicismo

text: Las enseñanzas de la Iglesia sobre el sexto mandamiento incluyen una discusión profunda sobre la castidad. El "Catecismo" describe la castidad como "una virtud moral, [...] un don de Dios, una gracia, un fruto del trabajo espiritual". La Iglesia ve el sexo como más que un acto físico; también afecta el cuerpo y el alma, por eso la Iglesia enseña que la castidad es una virtud que todas las personas son llamadas para conquistar y adquirir. Es definida como "la unidad interior del hombre en su ser corporal y espiritual" que integra con Éxito la sexualidad humana en la persona, con su "naturaleza humana entera." Para adquirir esta virtud, los católicos son incentivados a entrar en el "trabajo largo y exigente" del autodominio, que es ayudado por los amigos, gracia de Dios, maduración y educación "que respete las dimensiones morales y espirituales de la vida humana." El "Catecismo" categoriza las violaciones del sexto mandamiento en dos categorías: "crímenes contra la castidad" y "crímenes contra la dignidad del casamiento".


title: Diez Mandamientos en el catolicismo

text: El "Catecismo" lista los siguientes "crímenes contra la castidad" en orden creciente de gravedad:


title: Diez Mandamientos en el catolicismo

text: El "Catecismo" dedica una sección separada para la homosexualidad dentro de su explicación del sexto mandamiento. Al igual que los actos heterosexuales fuera del casamiento, los actos homosexuales son considerados pecados y "son intrínsecamente desordenados". La Iglesia distingue entre las atracciones homosexuales, que no son considerados pecados, y los actos homosexuales, que si lo son. El "Catecismo" afirma que estos actos "son contrarios a la ley natural, cierra el acto sexual al don de la vida, no proceden de una verdadera complementariedad afectiva sexual, [por eso] no pueden, en ningún caso, ser aprobados". La Iglesia enseña que la inclinación homosexual es «objetivamente desordenada» y que constituye una auténtica prueba para la persona. Pero la Iglesia también enseña que los homosexuales "deben ser acogidos con respeto, compasión y delicadeza" y "cualquier signo de discriminación injusta" contra ellos debe ser evitada.


title: Diez Mandamientos en el catolicismo

text: Los homosexuales son, de acuerdo con la Iglesia, "llamados a la castidad". Ellos deben ser instruidos para practicar las virtudes del "autodominio" que eduquen la "libertad interior", mediante el apoyo de una amistad desinteresada, de la oración y la gracia sacramental. Estos instrumentos y auxilios están destinados a ayudar a los homosexuales a aproximarse, "gradual y resueltamente", a la perfección y santidad cristiana, que es un estado espiritual al cual son llamados todos los cristianos.


title: Diez Mandamientos en el catolicismo

text: Según las enseñanzas de la Iglesia, el amor conyugal tiene por objetivo lograr un fin doble e indisociable: la unión de marido y mujer, para "el bien de los propios cónyuges", y la transmisión de la vida. Por lo tanto, "el amor conyugal del hombre y la mujer está, además, bajo la doble exigencia de la fidelidad y la fecundidad".El aspecto unitivo incluye la entrega recíproca del sí mismo de cada pareja, por lo que "simplemente ya no son dos sino una sola carne." El sacramento del Matrimonio es visto como que Dios sella el consentimiento que une a los cónyuges. Este consentimiento incluye la aceptación de los fracasos y errores del otro cónyuge el reconocimiento de la "llamada a la santidad en el casamiento", que exige a ambos un proceso de crecimiento espiritual y de conversión que puede durar toda la vida.


title: Diez Mandamientos en el catolicismo

text: A lo largo de la historia de la Iglesia católica, los pensadores católicos ofrecieron opiniones divergentes sobre el placer sexual. Algunos lo vieron como pecaminoso, mientras que otros no estaban de acuerdo. La Iglesia no tenía una posición formal hasta el año 1546, cuando el Concilio de Trento decidió que la concupiscencia invita al pecado, pero "no es formalmente pecaminosa por sí misma." En 1679, el Papa Inocencio XI condenó el "sexo marital hecho solo por placer." La posición de la Iglesia sobre la actividad sexual puede ser resumida como: la "actividad sexual pertenece solamente en el casamiento como una expresión de la unión y donación total, y siempre abierta a la posibilidad de una nueva vida". Los actos sexuales en el casamiento son considerados "nobles y honrados" y son destinados a ser apreciados con "alegría y gratitud".


title: Diez Mandamientos en el catolicismo

text: Los anticonceptivos son anteriores al Cristianismo, la Iglesia católica condenó estos métodos a lo largo de su historia. En respuesta a la Iglesia Anglicana habiendo aceptado la práctica de la anticoncepción artificial en 1930, la Iglesia católica emitió la encíclica papal "Casti connubii" el 31 de diciembre de 1930. El 1968 encíclica papal "Humanae Vitae" es una reafirmación de la visión tradicional de la Iglesia católica sobre el matrimonio y las relaciones maritales, así como la condena permanente de control artificial de la natalidad artificial.


title: Diez Mandamientos en el catolicismo

text: La Iglesia anima a las familias numerosas, viéndolas como una bendición. Sin embargo, también reconoce que la paternidad responsable puede, en algunos casos, dependiendo de las circunstancias, necesitar de una cierta limitación o espaciamiento entre los nacimientos, y esto se puede hacer a través de la planificación familiar natural, que es moralmente aceptable, a diferencia de los métodos de anticoncepción artificial, que son rechazados. La Iglesia también rechaza todas las formas de la inseminación artificial, ya que estas técnicas "disocian el acto sexual del acto procreador", "provocan una disociación de la paternidad por intervención de una persona extraña a los cónyuges (donación del esperma o del óvulo, préstamo de útero) son gravemente deshonestas" y "lesionan el derecho del niño a nacer de un padre y una madre conocidos de él y ligados entre sí por el matrimonio". El "Catecismo" afirma que un niño "no es un derecho, es un regalo" y es el "don más excelente del matrimonio".


title: Diez Mandamientos en el catolicismo

text: Muchos católicos y no católicos han acusado a la Iglesia de contribuir a la superpoblación y a la pobreza al apoyar la planificación familiar natural. El rechazo de la Iglesia por el uso del preservativo es muy criticada, sobre todo en los países donde la incidencia de SIDA ha alcanzado proporciones de epidemia. En su defensa, la Iglesia cita a países como Kenia y Uganda, donde se alientan los cambios de comportamiento en lugar del uso del condón, y donde se han logrado mayores avances en el control de la enfermedad que en los países que promueven solo el uso del preservativo.


title: Diez Mandamientos en el catolicismo

text: Según la Iglesia, el adulterio y el divorcio son considerados "ofensas a la dignidad del matrimonio" y están definidos de la siguiente forma:


title: Diez Mandamientos en el catolicismo

text: Además de estas dos grandes ofensas, la poligamia, el incesto y la "unión libre" (que incluye la unión de hecho y el concubinato) son también consideradas "ofensas a la dignidad del matrimonio".


title: Diez Mandamientos en el catolicismo

text: Según la Iglesia, hay situaciones que no corresponden al divorcio:


title: Diez Mandamientos en el catolicismo

text: El "Catecismo" explica que este mandamiento regula los bienes materiales y prohíbe tomar injustamente, usurpar, usar o causar daño a los bienes que pertenezcan a otra persona, contra su propia voluntad. Establece requisitos sobre aquellos que poseen bienes mundanos para usarlos de manera responsable, teniendo en cuenta el bien de la sociedad. El "Catecismo" aborda el concepto de la creación de Dios en la explicación del séptimo mandamiento y prohíbe el abuso de animales y del medio ambiente.


title: Diez Mandamientos en el catolicismo

text: Según la Iglesia católica, las personas tienen el derecho a la propiedad privada. Sin embargo, esta propiedad hace de esa persona "un administrador" que se espera que lo haga "fructífero" o rentable de una manera que beneficie a los demás después de que esa persona haya cuidado a su familia. La propiedad privada y el bien común son vistos como elementos complementarios que existen con el propósito de fortalecer la sociedad. La incautación de la propiedad privada de otra persona no se considera ni pecado ni robo cuando una necesidad obvia y urgente es "la única forma de satisfacer las necesidades inmediatas y esenciales (alimentos, vivienda, ropa)". El concepto de que los esclavos son también propiedad privada es condenado por la Iglesia, que lo clasifica como una violación y un robo de los derechos humanos de la persona esclavizada.


title: Diez Mandamientos en el catolicismo

text: La encíclica papal "Rerum Novarum", que inauguró la sistematización de la Doctrina Social de la Iglesia, discute las relaciones y deberes recíprocos entre trabajos y capital, y entre el gobierno y sus ciudadanos. La preocupación principal fue la necesidad de mejorar, combatir y aliviar "la miseria que presiona tan injustamente la mayoría de la clase trabajadora". La encíclica apoyó el derecho de formar sindicatos de trabajadores, rechazó el comunismo y el capitalismo sin restricciones y reafirmó el derecho a la propiedad privada.


title: Diez Mandamientos en el catolicismo

text: La interpretación del séptimo mandamiento enseña que los empresarios deben equilibrar el deseo de lucros que garanticen el futuro de la empresa y el "bien de las personas". Los dueños de empresas están obligados a pagar a sus trabajadores un salario razonable, honrar los contratos y abstenerse de actividad deshonesta, incluyendo el soborno de funcionarios públicos. Los trabajadores están obligados a hacer su trabajo conscientemente, como está escrito en sus contratos, y evitar la deshonestidad en el ubicación de trabajo, como el uso de material de la empresa para uso personal sin permiso.


title: Diez Mandamientos en el catolicismo

text: La Iglesia enseña que debe existir equilibrio entre la reglamentación gubernamental y las leyes del mercado. Y considera que la dependencia exclusiva del mercado (o capitalismo puro) no consigue abordar suficientemente muchas de las necesidades humanas, mientras que confíen en la regulación del gobierno (o socialismo puro) "pervierte en su base los vínculos sociales". Sin embargo, la Iglesia no rechaza el capitalismo o el socialismo, pero si advierte contra los excesos y los extremos de cada sistema que dará lugar a la injusticia con las personas. La Iglesia también enseña que las naciones más ricas, así como las personas más ricas, tienen la obligación moral de ayudar a las naciones y a las personas más pobres y trabajar para reformar las instituciones financieras y para el beneficio económico de todos.


title: Diez Mandamientos en el catolicismo

text: La Iglesia enseña que "una vez que Dios es el «Verdadero» (), los miembros de su pueblo son llamados a vivir en la verdad" y testimoniar la verdad revelada por Jesús y manifestada totalmente por Jesús. Por eso, de acuerdo con la Iglesia, las violaciones y ofensas a la verdad son pecados y tienen diferentes grados de gravedad, dependiendo de las "intenciones de quien comete y los daños sufridos por sus víctimas." A continuación se enumeran los delitos o violaciones:


title: Diez Mandamientos en el catolicismo

text: La Iglesia exige que los que han manchado la reputación de los demás tienen que reparar las falsedades que han sido comunicadas. Sin embargo, la Iglesia también enseña que toda persona tiene derecho a la privacidad, por eso que no hay necesidad de que una persona revele una verdad a alguien que no tiene derecho a saberla. Los padres tienen prohibido violar el secreto de la confesión, independientemente de cualquier circunstancia o razón y no importando cuan grave sea el pecado o su impacto en la sociedad. Cualquier padre que viole el secreto de la confesión incurre en excomunión "latae sententiae", esto es, "por el hecho mismo de violar la norma". Incluidos en la enseñanza de la Iglesia sobre este mandamiento está el requisito que los cristianos den testimonio de su fe "inequívocamente" en situaciones que lo requieran. Está condenado el uso de las nuevas tecnologías por parte de individuos, empresas o gobiernos para propagar mentiras.


title: Diez Mandamientos en el catolicismo

text: El noveno y décimo mandamiento tratan de la codicia o avaricia, que es una disposición interior y no un acto físico. El "Catecismo" distingue entre la codicia de la carne (deseo sexual por otro cónyuges) y la codicia de los bienes materiales.


title: Diez Mandamientos en el catolicismo

text: De acuerdo a los textos bíblicos, Jesús enfatizó la necesidad de pensamientos puros, así como de acciones puras, y afirmó que "cualquiera que mira a una mujer para codiciarla, ya adulteró con ella en su corazón." El "Catecismo" afirma que, con la ayuda de la gracia de Dios, hombres y mujeres están obligados a superar la lujuria y otros deseos carnales, "tales como las relaciones pecaminosas con un cónyuge de otra persona." La pureza de corazón es sugerida como una cualidad necesaria para realizar esa tarea. Las habituales oraciones e himnos católicos contienen un pedido para esa importante virtud. La Iglesia identifica los siguientes dones de Dios que ayudan a mantener la pureza de una persona:


title: Diez Mandamientos en el catolicismo

text: Acorde a las escrituras, Jesús declaró que son "bien-aventurados los puros de corazón, porque verán a Dios". La pureza de corazón, que introduce el noveno mandamiento, es la "condición previa" para los santos vean a Dios cara a cara y permite a la persona vea las situaciones puras y las personas como Dios las ve. Esta manera de ver las cosas le permite "aceptar al otro como un «próximo» y comprender el cuerpo humano, el nuestro, y del prójimo, como un templo del Espíritu Santo, una manifestación de la belleza divina". El "Catecismo" enseña que "hay una conexión entre la pureza del corazón, del cuerpo y de la fe," y los "puros de corazón" aquellos que "ponen el intelecto y la voluntad de acuerdo con las exigencias de la santidad de Dios, principalmente en tres áreas: la caridad, la castidad o rectitud sexual, el amor a la verdad y la ortodoxia de la fe".


title: Diez Mandamientos en el catolicismo

text: El desprendimiento de las riquezas es el objetivo del décimo mandamiento y de la primera Bienaventuranza ("Bienaventurados los pobres de espíritu"), porque, de acuerdo al "Catecismo", es necesario este precepto para la entrada en el reino de los cielos. La codicia es prohibida por el décimo mandamiento, pues es considerada la "raíz de donde procede el robo, la rapiña y el fraude, prohibidos por el séptimo mandamiento" y que pueden llevar a la violencia y a la injusticia. La Iglesia define la codicia como un "deseo desordenado" que puede asumir diferentes formas:


title: Diez Mandamientos en el catolicismo

text: Explicando la enseñanza de la Iglesia sobre este mandamiento, Kreeft cita a San Tomás de Aquino, que escribió que "un deseo malo solo puede ser superado por un deseo bueno más fuerte." La USCCB sugiere que esto puede ser conseguido a través del cultivo de la buena voluntad, humildad, gratitud y confianza en la gracia de Dios. En su carta a los Filipenses, San Pablo de Tarso, después de listar sus calificaciones personales y hechos terrenos como judío respetado, consideró todo aquello "como pérdida, comparado con la suprema grandeza del conocimiento de Cristo Jesús, mi Señor, por cuya causa perdió todas las cosas. Yo las considero como estiércol para poder ganar a Cristo y ser encontrado en él". Kreeft explica que la enseñanza de la Iglesia sobre el décimo mandamiento es direccionado para esa actitud de San Pablo para con los bienes materiales, denominada "pobreza de espíritu". Esta actitud humilde y desapegada es una bienaventuranza a ser vivida, porque, conforme a las escrituras, Jesús afirmó "¿qué aprovechará al hombre si ganare todo el mundo, y perdiere su alma?"


title: Torres de Matheu

text: Las Torres de Matheu son un conjunto urbano residencial compuesto por 6 edificios de departamentos en torre, de 21 pisos cada uno construido para alojar a miembros de la Confederación de Empleados de Comercio. Se encuentra en el barrio de Parque Patricios en la ciudad de Buenos Aires, Argentina.


title: Torres de Matheu

text: Esta denominación no es oficial, ya que el conjunto no posee un nombre determinado (el proyecto figura como Conjunto habitacional Brasil y Matheu), pero sus propios habitantes lo llaman de esta manera, y así se las conoce en su barrio.


title: Torres de Matheu

text: Las torres fueron construidas a principios de la década de 1960, proyectadas por los arquitectos Miguel C. Roca y Roberto Fernández Llanos. La inscripción del dominio catastral data de 1958 y los planos de mensura conforme a obra datan de 1964. De los 6 edificios, 5 se encuentran alineados a lo largo de la calle Matheu, y el último se ubica del lado de la calle Alberti. Las 5 torres que dan a la calle Matheu son de planta cruciforme y están unidas e interconectadas en su parte superior. Cada una tiene una entrada independiente y 4 ascensores. Tienen 840 departamentos de 1, 2 y 3 dormitorios y suman 72.946 m² de superficie cubierta.


title: Torres de Matheu

text: Por otro lado, la torre que da a la calle Alberti tiene 82 departamentos de 3 dormitorios y uno de 5, distribuidos de a 4 por piso, con una superficie cubierta de 6.380 m².


title: Torres de Matheu

text: En un edificio del complejo (Torre 3) vivió durante su adolescencia el periodista Juan Castro.


title: Comisión Europea de los Derechos Humanos

text: La Comisión Europea de Derechos Humanos (inglés: "European Commission of Human Rights") fue un tribunal especial del Consejo de Europa.


text: Desde 1954 hasta la entrada en vigencia del Protocolo 11 de la Convención Europea de Derechos Humanos, los individuos no podían tener acceso directo a la Corte Europea de Derechos Humanos, sino que debían acudir a la Comisión, que establecía si el caso estaba bien fundado como para ser analizado en la Corte. El Protocolo 11, cuya vigencia inició el 31 de octubre de 1998, abolió la Comisión, y permitió que los individuos pudieran acudir a la Corte directamente. Sin embargo, de acuerdo con el Protocolo 11, la Comisión continuó en funciones durante un año más (hasta el 31 de octubre de 1999) para instruir los casos declarados admisibles por ella antes de la entrada en vigor del Protocolo.


text: El Sistema Interamericano de Derechos Humanos mantiene un régimen homónimo al Europeo previo al Protocolo 11, con una Corte y una Comisión.


title: C++11

text: C++11 es una versión del lenguaje de programación C++ estándar aprobado por la Organización Internacional de Normalización (ISO) el 12 de agosto de 2011, reemplazando al anterior C++03. A partir del 18 de agosto de 2014 fue sustituido por la versión C++14 y más tarde por C++17. El nombre sigue la tradición de denominar a las versiones del lenguaje C++ a partir de la fecha de publicación, aunque su nombre original fue C++0x debido a que esperaba ser publicada antes de 2010.


title: C++11

text: A pesar de que uno de los objetivos era hacer los cambios en las librerías en lugar de hacerlo en el núcleo del lenguaje, C++11 añade algunas cosas al núcleo. Algunas áreas del lenguaje que fueron significativamente mejoradas como el soporte multihilo, soporte para la programación genérica, inicialización uniforme y el rendimiento. La Librería Estándar de C++ también recibió numerosos cambios, incorporando la mayoría de las bibliotecas definidas en el documento C++ Technical Report 1 (TR1), con la excepción de la biblioteca de funciones matemáticas especiales.


title: C++11

text: El borrador más parecido al C++11 publicado es el N3337 del 16 de enero de 2012, el cual realiza solo algunas correcciones editoriales al estándar.


title: C++11

text: En el desarrollo de cada utilidad del nuevo estándar, el comité ha aplicado algunas directivas: La atención a los principiantes es muy importante porque ellos siempre serán la mayoría entre los programadores, y porque muchos principiantes no intentarían ampliar su conocimiento de C++, limitándose ellos mismos a operar en los aspectos del lenguaje en el que están especializados. Adicionalmente, considerando la vastedad de C++ y de su uso (incluyendo áreas de aplicación y estilos de programación), incluso los programadores más experimentados pueden convertirse en principiantes en un nuevo paradigma de programación.


title: C++11

text: Una función del comité de C++ es el desarrollo del núcleo del lenguaje. Las áreas del núcleo del lenguaje que fueron significativamente mejoradas incluyen el soporte multithreading (multihilo), el soporte de programación genérica, la inicialización uniforme, y mejoras del rendimiento.


title: C++11

text: Para los propósitos de este artículo, las características y los cambios del núcleo del lenguaje son agrupadas en 4 secciones generales:Algunas características podrían entrar en múltiples grupos, pero solo son mencionadas en el grupo que primariamente representa esa característica.


title: C++11

text: Estas características del lenguaje existen primariamente para proporcionar un cierto tipo de beneficio en el rendimiento, tanto de la memoria como de la velocidad cómputo.En el C++03 (y anteriores), los temporales, llamados "rvalues" pues a menudo se encuentran en el lado derecho de una asignación, fueron pensados para nunca ser modificables - justo como en C (y eran considerados ser indistinguibles de los tipos codice_1) - aunque en algunos casos los temporales habrían podido ser modificados, e incluso era considerados ser un útil agujero de escape (loophole) (para el anterior, ver Sutter, Alexandrescu "C++ coding standards" #15). C++11 agrega un nuevo tipo de referencia no-constante llamado una referencia rvalue, identificada por T&&. Esto refiere a los temporales en que se permite que sean modificados después de que son inicializados, con el propósito de permitir la "semántica del movimiento" (move semantics).


title: C++11

text: Un problema de rendimiento crónico con el C++03 son las costosas e innecesarias copias profundas que pueden suceder implícitamente cuando los objetos son pasados por valor. Para ilustrar el problema, considere que un codice_2 es, internamente, una envoltura (wrapper) alrededor de una tabla (array) de estilo C con un tamaño. Si un codice_2 temporal se crea en una función, solamente se puede almacenar creando un nuevo codice_2 y copiando todos los datos rvalue en él. Luego, el temporal y toda su memoria es destruido. (Por simplicidad, este argumento deja de lado la optimización del valor devuelto).


title: C++11

text: En el C++11, un "move constructor" del codice_2 que toma una referencia rvalue a un codice_2 puede simplemente copiar el puntero a la variable interna, de estilo C, fuera del rvalue en el nuevo codice_2, entonces cambiar el puntero dentro del rvalue a null. Debido a que se puede reinicializar el puntero temporal, el objeto no se borra cuando se sale del ámbito (scope), y no es necesaria una copia profunda. Por otra parte, es una operación segura e invisible porque el temporal nunca se usará otra vez.


title: C++11

text: Las referencias de rvalue pueden proporcionar beneficios de rendimiento al código existente sin la necesidad realizar cualquier cambio fuera de la biblioteca estándar. El tipo del valor retornado de una función que retorna un codice_2 temporal no necesita ser cambiado explícitamente al codice_9 para invocar al move constructor, pues los temporales son considerados automáticamente como rvalues. (Sin embargo, si codice_2 es la versión del C++03 sin un move constructor, después el copy constructor será invocado con un codice_11 como se hace normalmente, incurriendo en una significativa asignación de memoria).


title: C++11

text: Por razones de la seguridad, algunas restricciones son impuestas. Una variable nombrada nunca será considerada para ser un rvalue incluso si se ha declarado como tal; para conseguir un rvalue, la plantilla de función codice_12 debe ser usada. También, las referencias de rvalue solamente pueden ser modificadas bajo ciertas circunstancias, siendo pensado para ser usado primariamente con los move constructor.


title: C++11

text: Debido a la naturaleza de la fraseología de las referencias rvalue, y a una cierta modificación a la fraseología para las referencias del lvalue (referencias regulares), las referencias rvalue permiten a los desarrolladores proporcionar forwarding de funciones perfectos. Cuando se combina con las plantillas variadic, esta capacidad permite plantillas de función que pueden perfectamente remitir (forward) argumentos a otra función que tome esos argumentos particulares. Esto es más útil para forwarding de parámetros del constructor, para crear funciones de factoría que llamarán automáticamente al constructor correcto para los particulares argumentos.


title: C++11

text: El C++ siempre ha tenido el concepto de expresiones constantes. Estas son expresiones tales como codice_13 que darán siempre los mismos resultados, en tiempo de compilación y en tiempo de ejecución. Las expresiones constantes son oportunidades de optimización para los compiladores, y los compiladores frecuentemente las ejecutan en tiempo de compilación y luego ponen los resultados codificados directamente en el programa (hard coded). También, hay un número de lugares en donde la especificación del C++ requiere el uso de expresiones constantes. La definición de un arreglo requiere una expresión constante, y los valores del enumerador deben ser expresiones constantes.


title: C++11

text: Sin embargo, las expresiones constantes siempre han terminado cuando una llamada de función o un constructor de objeto sea encontrado. Así que una pieza de código tan simple como ésta es ilegal: int algun_valor[dame_cinco() + 7]; // Crea un arreglo de 12 enteros. Ilegal en C++ Éste no es C++ legal, porque codice_14 no es una expresión constante. El compilador no tiene manera de saber si codice_15 es realmente constante en tiempo de ejecución. En teoría, esta función podía afectar a una variable global, llamar a otras funciones constantes de no tiempo de ejecución, etc.


title: C++11

text: C++11 introdujo la palabra clave codice_16 (expresión constante), que permite al usuario garantizar que una función o un constructor de objeto es constante en tiempo de compilación. El ejemplo de arriba puede ser reescrito como sigue: int algun_valor[dame_cinco() + 7]; // Crea un arreglo de 12 enteros. Legal en C++11 Esto permite que el compilador entienda, y verifique, que codice_17 es una constante en tiempo de compilación.


title: C++11

text: El uso del codice_16 en una función impone limitaciones muy estrictas en lo que esa función puede hacer. Primero, la función debe tener un tipo de retorno que no sea void. En segundo lugar, el contenido de la función debe ser de la forma: codice_19. Tercero, la expresión debe ser una expresión de constante después de la sustitución del argumento. Esta expresión constante puede solamente llamar a otras funciones definidas como constexpr, o puede usar otras variables de datos de expresiones constantes. Por último, una función con esta etiqueta no puede ser llamada hasta que es definida en esta unidad de traducción (translation unit).


title: C++11

text: Las variables también pueden ser definidas como valores de expresiones constantes: constexpr double aceleracion_de_gravedad = 9.8; constexpr double gravedad_lunar = aceleracion_de_gravedad / 6.0; Las variables de los datos de la expresión constante son implícitmente const. Solo pueden almacenar los resultados de expresiones constantes o de constructores de expresiones constantes.


title: C++11

text: Para construir valores de datos de expresión constante desde tipos definidos por el usurario, los constructores también pueden ser declarados con codice_16. Un constructor de expresión constante debe ser definido antes de su uso en la unidad de traducción, como con las funciones de expresión constante. Debe tener un cuerpo de función vacío. Debe inicializar a sus miembros con expresiones constantes. Los destructores para tales tipos deben ser triviales.


title: C++11

text: Para copiar tipos construidos constexpr también deben ser definidos como codice_16, para permitir que retornen por valor desde una función constexpr. Cualquier función miembro de una clase, tal como copy constructors, sobrecarga de operadores, etc, pueden ser declaradas como codice_16, siempre y cuando adapten la definición para expresiones constantes de función. Esto permite al compilador copiar clases en tiempo de compilación, realiza operaciones en ellas, etc.


title: C++11

text: Una función de expresión constante o un constructor puede ser llamado con parámetros que no sean constexpr. Justo como un literal de número entero constexpr puede ser asignado a una variable que no sea constexpr, así que una función constexpr también puede ser llamada con parámetros que no sean constexpr, y los resultados almacenados en variables que no sean constexpr. La palabra clave solo permite la posibilidad de constante de tiempo de compilación cuando todos los miembros de una expresión son constexpr.


title: C++11

text: En el C++03, una clase o struct debe seguir un número de reglas para que sea considerado un tipo plain old data (POD). Los tipos que cumplen esta definición producen layouts de objetos que son compatibles con C. Sin embargo, la definición en C++03 es innecesariamente estricta y hay buenas razones para permitir a más tipos cumplir la definición de POD . C++11 relajó varias de las reglas .


title: C++11

text: Una clase/struct es considerada una POD si es trivial, de standard-layout, y si todos sus miembros no estáticos son POD.


title: C++11

text: Una clase o struct trivial se define como uno los siguientes:Una clase o struct es standard-layout, por definición, con tal que cumpla lo siguiente:En el C++03, el compilador debe instanciar una plantilla siempre que una plantilla especificada completamente es encontrada en una unidad de traducción. Si la plantilla es instanciada con el mismo tipo en muchas unidades de traducción, ésta puede aumentar dramáticamente el tiempo de compilación. No hay manera de prevenir esto en C++03, así que C++11 introdujo las declaraciones de plantilla extern, análogas a las declaraciones de datos extern.


title: C++11

text: C++03 tiene esta sintaxis para obligar al compilador a instanciar una plantilla: template class std::vector; C++11 ahora proporciona este sintaxis: extern template class std::vector; la cual le dice al compilador que no instancie la plantilla en esta unidad de traducción.


title: C++11

text: Estas características existen para el propósito primario de hacer el lenguaje más fácil usar. Estas pueden mejorar la seguridad de tipo, minimizar la repetición de código, hacer que el código erróneo sea menos probable, etc.C++03 heredó la característica del inicializador de lista de C. Un struct o un arreglo recibe una lista de argumentos en llaves cuadradas (corchetes), en el orden de las definiciones de los miembros en el struct. Estos inicializadores de listas son recursivos, así que pueden usarlos un arreglo de structs o un struct que contiene otros structs. struct Objeto


title: C++11

text: Objeto escalar = {0.43f, 10}; // Un objeto, con primero=0.43f y segundo=10 Objeto unArreglo[] = ; // Un arreglo con tres objetos Esto es muy útil para las listas estáticas o justo para inicializar un struct con un valor particular. C++ también proporciona constructores para inicializar un objeto, pero a menudo no son tan convenientes como el inicializador de lista. Sin embargo C++03 solo permite inicializar listas en los structs y las clases que se ajustan a la definición Plain Old Data (POD); C++11 extiende la inicialización de listas, así que pueden ser usadas para todas las clases incluyendo los contenedores estándar como el codice_24.


title: C++11

text: C++11 ata (bind) el concepto a una plantilla, llamada codice_25. Esto permite que los constructores y otras funciones tomen inicializadores de lista como parámetros. Por ejemplo: class ClaseDeSecuencia { public:


title: C++11

text: Esto permite que codice_26 sea construida de una secuencia de números enteros, como en: ClaseDeSecuencia alguna_variable = {1, 4, 5, 6}; Esta es una clase especial de constructor, llamada constructor inicializador de lista. Las clases con tal constructor son tratadas especialmente durante la inicialización uniforme (ver abajo)


title: C++11

text: La clase codice_27 es un tipo de biblioteca estándar C++11 de primera clase. Sin embargo, solo pueden ser inicialmente construidos estáticamente por el compilador de C++11 con el uso de la sintaxis {}. La lista puede ser copiada una vez construida, por lo que es solamente una copia-por-referencia. Una lista de inicializador es constante; una vez que la lista del inicializador es creada, sus miembros no pueden ser cambiados, ni los datos en esos miembros.


title: C++11

text: Debido a que el initializer_list es un verdadero tipo, puede ser usado en otros lugares además de los constructores de clase. Las funciones regulares pueden tomar tipos de listas inicializadas como argumentos. Por ejemplo: void nombre_de_funcion(std::initializer_list list);


title: C++11

text: nombre_de_funcion({1.0f, -3.45f, -0.4f}); Los contenedores estándar también pueden ser inicializados de las maneras siguientes: std::vector v = { "xyzzy", "plugh", "abracadabra" }; std::vector v{ "xyzzy", "plugh", "abracadabra" };


title: C++11

text: El C++03 tiene un número de problemas con los tipos de inicialización. Hay varias maneras de inicializar tipos, y no todas producen los mismos resultados cuando son intercambiadas. La sintaxis tradicional del constructor, por ejemplo, puede parecerse como una declaración de función, y deben tomarse medidas para asegurarse que la regla del parse más irritante no la confundirá como tales. Solamente los agregados y los tipos POD pueden ser inicializados con inicializadores agregados (usando codice_28).


title: C++11

text: C++11 proporciona una sintaxis que permite la inicialización de tipo completamente uniforme que trabaja en cualquier objeto. Se expande en la sintaxis de inicializador de lista: struct EstructuraBasica {


title: C++11

text: struct EstructuraAlterna { private:


title: C++11

text: EstructuraBasica var1{5, 3.2}; EstructuraAlterna var2{2, 4.3}; La inicialización de codice_29 se comporta exactamente como si fuera una inicialización de agregado. Es decir, cada miembro de datos de un objeto, a su vez, será inicializado por copia con el correspondiente valor de la lista de inicialización. La conversión de tipo implícita será usada cuando se necesite. Si no existe ninguna conversión, o solo existe un estrechamiento de conversión, el programa está malformado. La inicialización de codice_30 invoca al constructor.


title: C++11

text: También se puede hacer lo siguiente: struct CadenaDeIdentificacion {


title: C++11

text: CadenaDeIdentificacion lee_cadena()


title: C++11

text: La inicialización uniforme no reemplaza la sintaxis de constructor. Todavía hay momentos en que es requerida la sintaxis de constructor. Si una clase tiene un constructor (codice_31), entonces toma prioridad sobre otras formas de construcción, a condición de que la lista del inicializador se conforme al tipo de constructor de secuencia. La versión C++11 del codice_24 tiene un constructor de lista de inicialización para su tipo de plantilla. Esto significa que el siguiente código: std::vector el_vector{4}; llamará al constructor de la lista del inicializador, no el constructor del codice_24 que toma un solo parámetro de tamaño y crea el vector con ese tamaño. Para acceder al último constructor, el usuario necesitará usar directamente la sintaxis de constructor estándar.


title: C++11

text: En el C++03 (y en C), el tipo de una variable debe ser explícitamente especificado para poder usarlo. Sin embargo, con el advenimiento de los tipos de plantilla y técnicas de metaprogramación de plantillas, puede que expresar el tipo de algo no sea fácil, particularmente cuando se trata de definir bien el valor de retorno de una función. También es difícil almacenar valores intermediarios en variables, y posiblemente se requerirá conocer las partes internas de una biblioteca de metaprogramación particular.


title: C++11

text: C++11 permite que esto sea mitigado de dos maneras. Primero, la definición de una variable con una inicialización explícita puede usar la palabra clave codice_34. Esto crea una variable del tipo específico del inicializador: auto algun_extraño_tipo_llamable = boost::bind(&alguna_funcion, _2, _1, algun_objeto); auto otra_variable = 5; El tipo codice_35 es simplemente lo que la plantilla particular de la función override de codice_36 retorna para esos argumentos particulares. Este tipo es fácilmente determinado por procedimiento por el compilador como parte de sus trabajos de análisis semántico, pero no es fácil de determinar por inspección por el usuario.


title: C++11

text: El tipo codice_37 también está bien definido, pero es más fácil de determinar por el usuario. Es un codice_38, el cual es el mismo tipo que el literal de número entero.


title: C++11

text: Adicionalmente, la palabra clave codice_39 puede ser usada para determinar el tipo de una expresión en tiempo de compilación. Por ejemplo: int algun_entero; decltype(algun_entero) otra_variable_entera = 5; Esto es más útil conjuntamente con codice_34, puesto que el tipo de una variable auto es solo conocido por el compilador. Sin embargo, el codice_39 también puede ser muy útil para las expresiones en el código que hacen un fuerte uso de sobrecarga de operador y de tipos especializados.


title: C++11

text: codice_34 es también útil para reducir la verbosidad del código. Por ejemplo, en vez de escribir for (std::vector::const_iterator iterador = mi_vector.cbegin(); iterador != mi_vector.cend(); ++iterador) el programador puede utilizar el más corto for (auto iterador = mi_vector.cbegin(); iterador != mi_vector.cend(); ++iterador) Esta diferencia crece a medida que el programador comienza a anidar los contenedores, aunque en tales casos los codice_43 son una buena manera de disminuir la cantidad de código.


title: C++11

text: El tipo denotado por el codice_39 puede ser diferente del tipo deducido por codice_34. int main()


title: C++11

text: En el C++03, la iteración sobre los elementos de una lista requiere mucho código. Otras lenguajes como C# y Java tienen atajos que permitan escribir una simple declaración "codice_46" que camina automáticamente por la lista desde el comienzo hasta el final.


title: C++11

text: C++11 agregó una característica similar. La declaración codice_47 permite una iteración fácil sobre una lista de elementos: int mi_arreglo[5] = {1, 2, 3, 4, 5}; for (int &x : mi_arreglo) {


title: C++11

text: Esta forma de codice_47, llamada "for basado en rango", iterará sobre cada elemento en la lista. Trabajará para los arreglos de estilo C, inicializadores de listas, y cualquier tipo que tenga definida una función codice_49 y codice_50 que retorne iteradores. Todos los contenedores de biblioteca estándar que tienen pares begin/end trabajarán con la sentencia for basada en rango.


title: C++11

text: C++11 proporciona la capacidad de crear funciones anónimas, llamadas funciones lambda. Estas se definen como sigue: El tipo de retorno está implícito; devuelve el tipo de la expresión de retorno (codice_51). El tipo de retorno de una lambda puede ser omitido siempre y cuando todas las expresiones de retorno devuelven el mismo tipo.


title: C++11

text: la sintaxis de declaración de una función estándar de C era perfectamente adecuada para el conjunto de características de este lenguaje. A medida que C++ evolucionó desde el C, mantuvo la sintaxis básica extendiéndola en caso necesario. Sin embargo, a medida que C++ llegó a ser más complicado, expuso un número de limitaciones, particularmente con respecto a declaraciones de funciones de plantilla. Lo siguiente, por ejemplo, no es permitido en C++03: template El tipo codice_52 es cualquier cosa que la adición de los tipos codice_53 y codice_54 produzca. Incluso con la ya mencionada funcionalidad C++11 del codice_39, esto no es posible: template Esto no es C++ legal porque codice_56 y codice_57 todavía no se han definido; no serán identificadores válidos hasta después de que el parser haya analizado el resto del prototipo de la función.


title: C++11

text: Para solucionarlo, C++11 introdujo una nueva sintaxis de declaración de función, con el tipo de retorno al final: template Esta sintaxis puede ser usada para declaraciones y definiciones de funciones más mundanas: struct AlgunaEstructura {


title: C++11

text: auto AlgunaEstructura::nombre_de_funcion(int x, int y) -> int {


title: C++11

text: En este caso el uso de la palabra clave "auto" significa algo diferente de su uso en la deducción de tipo automática.


title: C++11

text: En C++03, a los constructores de una clase no se les permite llamar a otros constructores de esa clase; cada constructor debe construir todos sus miembros de clase por sí mismo o llamar a una función de miembro común, como los siguientes, class AlgunTipo {


title: C++11

text: public:


title: C++11

text: class AlgunTipo {


title: C++11

text: private:


title: C++11

text: Los constructores para las clases base no pueden ser expuestos directamente a las clases derivadas; cada clase derivada debe implementar constructores incluso si un constructor de clase base fuera apropiado. los miembros de datos no constantes de las clases no pueden ser inicializados en el sitio de la declaración de esos miembros. Solo pueden ser inicializados en un constructor.


title: C++11

text: El C++11 proporciona soluciones a todos estos problemas.


title: C++11

text: El C++11 permite a los constructores llamar a otros constructores pares (conocidos como delegación). Esto permite a los constructores usar el comportamiento de otro constructor con un mínimo de código añadido. Ejemplos de otros lenguajes similares a C++ que proporcionen la delegación son Java, C#, y D.


title: C++11

text: Esta sintaxis es como sigue: class AlgunTipo {


title: C++11

text: Note que, en este caso, el mismo efecto habría podido ser alcanzado haciendo new_number un parámetro por defecto. Sin embargo, la nueva sintaxis permite que al valor por defecto (42) sea expresado en la implementación en vez de la interfaz - un beneficio para los mantenedores del código de la biblioteca puesto que los valores por defecto para los parámetros de la función son "horneados" para llamar sitios, mientras que la delegación del constructor permite que el valor sea cambiado usando la biblioteca sin la recompilación del código.


title: C++11

text: Esto viene con una advertencia: C++03 considera un objeto a ser construido cuando su constructor termine de ejecutarse, pero C++11 considera un objeto construido una vez que cualquier constructor termine su ejecución. Puesto que se permitirá ejecutar a múltiples constructores, esto significará que cada constructor delegado ejecutará en un objeto completamente construido de su propio tipo. Los constructores de clase derivados, ejecutarán después de que toda la delegación en sus clases base esté completa.


title: C++11

text: Para los constructores de la clase base, el C++11 permite a una clase especificar que los constructores de la clase base sean heredados. Esto significa que el compilador C++11 generará código para realizar la herencia, el forwarding de clase derivada a la clase base. Observe que esto es una característica de todo o nada; todos los constructores de esa clase base son forwarded o ningunos de ellos lo son. También, observe que hay restricciones para la herencia múltiple, de tal manera que los constructores de clase no pueden ser heredados a partir de dos clases que usen constructores con la misma firma. Ni puede existir un constructor en la clase derivada que tenga una firma igual en la clase base heredada.


title: C++11

text: la sintaxis es como sigue: class ClaseBase {


title: C++11

text: class ClaseDerivada : public ClaseBase {


title: C++11

text: Para la inicialización de miembros, C++11 permite la siguiente sintaxis: class AlgunaClase {


title: C++11

text: Cualquier constructor de la clase inicializará el valor en 5, si el constructor no sobreescribe la inicialización con las propios. Así que el constructor vacío de arriba inicializará el valor como establece la definición de la clase, pero el constructor que toma un int, lo inicializará con el parámetro dado.


title: C++11

text: También puede usar la inicialización de constructor o uniforme, en vez de la inicialización de igualdad mostrada arriba.


title: C++11

text: En C++03, es posible crear accidentalmente una nueva función virtual, cuando en realidad uno solo se prepuso un override de una función de la clase base. Por ejemplo: struct Base {


title: C++11

text: struct Derivada : Base {


title: C++11

text: Por ejemplo, queremos diseñar codice_58 para reemplazar la versión de la clase base. Pero, debido a que la función virtual tiene una firma diferente, en realidad crea una segunda función virtual. Esto es un problema común, particularmente cuando un usuario va a modificar la clase base.


title: C++11

text: C++11 proporciona una sintaxis para solucionar este problema. struct Base {


title: C++11

text: El identificador especial codice_59 significa que el compilador comprobará la clase base para ver si hay una función virtual con esta firma exacta. Y si no la hay, el compilador producirá un error.


title: C++11

text: C++11 también agrega la capacidad de prevenir poder heredar clases o sobrecargar funciones específicas. Esto se consigue con el identificador especial codice_60. Por ejemplo: struct Base1 final { };


title: C++11

text: struct Derivada1 : Base1 { }; // Mal formado porque la clase base está marcada como final


title: C++11

text: struct Base2 {


title: C++11

text: struct Derivada2 : Base2 {


title: C++11

text: En este ejemplo, la sentencia codice_61 declara una nueva función virtual, pero también previene a las clases derivadas poder sobrecargarla. También tiene el efecto de prevenir, a las clases derivadas, de usar esa combinación particular de nombre de función y parámetros.


title: C++11

text: Observe que ni codice_59 ni codice_60 son palabras claves del lenguaje. Técnicamente son identificadores; solo ganan un significado especial cuando son usados en esos contextos específicos. En cualquier otra localización, pueden ser identificadores válidos.


title: C++11

text: Únicamente para los propósitos de esta sección, cada ocurrencia de "0" significará "expresión constante que se evalúa a 0, que es del tipo entero int". En realidad, la expresión constante puede ser de cualquier tipo entero.


title: C++11

text: Desde el amanecer de C en 1972, la constante 0 ha tenido el doble papel de constante de número entero y de constante de puntero nulo. La ambigüedad inherente en el doble significado de 0 fue tratada en C por el uso del macro codice_64 del preprocesador, que comúnmente expande a codice_65 ó codice_66. C++ no adoptó el mismo comportamiento, permitiendo a codice_66 solamente como constante del puntero nulo. Esto interactúa mal con la sobrecarga de funciones: void foo(char *); void foo(int); Si codice_64 está definido como codice_66 (lo usual en el caso del C++), la sentencia codice_70 llamará a codice_71, que casi con toda certeza no es lo que pensó el programador, y no es lo que sugiere una lectura superficial del código.


title: C++11

text: C++11 corrige esto introduciendo una nueva palabra clave para servir como constante inconfundible de puntero nulo: codice_72. Es del tipo codice_73, que es implícitamente convertible y comparable a cualquier tipo de puntero o tipo de puntero-a-miembro. No es implícitamente convertible o comparable a los tipos enteros, a excepción de codice_74. Mientras que la propuesta original especificó que un rvalue del tipo codice_72 no debería ser convertible a codice_74, el grupo de trabajo del núcleo del lenguaje decidió que tal conversión sería deseable, para la consistencia con los tipos punteros regulares. Los cambios de redacción propuestos fueron votados unánimemente en el documento de trabajo en junio de 2008.


title: C++11

text: Por razones de compatibilidad hacia atrás, codice_66 sigue siendo un constante de puntero nulo válida. char *pc = nullptr; // OK int *pi = nullptr; // OK bool b = nullptr; // OK. b es false. int i = nullptr; // error foo(nullptr); // invoca foo(char *), no foo(int);


title: C++11

text: En C++03, las enumeraciones no son de tipo seguro. Internamente, en realidad son números enteros, incluso cuando los tipos de la enumeración son distintos. Esto permite la comparación entre dos valores de diferentes tipos de enumeración. La única seguridad que C++03 proporciona es que un número entero o un valor de un tipo enum no se convierte implícitamente a otro tipo enum. Además, el tipo 'int' subyacente está definido por la implementación del compilador. Por lo tanto, el código que depende del tamaño de la enumeración no es portable. Por último, los valores de la enumeración tienen un ámbito definido por el ámbito que los encierra. Así, no es posible que dos enumeraciones separadas tengan nombres de miembro que emparejen.


title: C++11

text: C++11 permitirá una clasificación especial de la enumeración que no tiene ninguno de esos problemas. Esto es expresado usando la declaración codice_78 (codice_79 también es aceptado como un sinónimo): enum class Enumeracion {


title: C++11

text: Esta enumeración es de tipo seguro; los valores de codice_78 no son convertidos implícitamente a números enteros. Por lo tanto, no pueden ser comparados con números enteros (la expresión codice_81 da un error del compilador).


title: C++11

text: El tipo subyacente de los miembros de las clases de enum no estará predefinido. Por defecto, como en el caso anterior, es codice_38, pero puede ser especificado explícitamente a un tipo diferente: enum class Enumeracion2 : unsigned int {Valor1, Valor2}; El ámbito de la enumeración también está definido como el ámbito del nombre de la enumeración. Usando los nombres de enumerador requiere explícitamente el uso de ámbitos. codice_83 es indefinido, pero codice_84 está definido.


title: C++11

text: Adicionalmente, C++11 permitirá que las enumeraciones estándar proporcionen un ámbito explícito así como la definición del tipo subyacente: enum Enumeracion3 : unsigned long {Valor1 = 1, Valor2}; Los nombres del enumerador son definidos en el ámbito de la enumeración (Enumeración3::Valor1), pero para la compatibilidad hacia atrás, los nombres del enumerador también son colocados en el ámbito de encerrado.


title: C++11

text: La declaración de enums también es posible en C++11. Previamente, los tipos de enum no podían ser declarados porque el tamaño de la enumeración depende de la definición de sus miembros. Siempre que el tamaño de la enumeración sea especificado implícita o explícitamente, puede ser declarado lo siguiente: enum Enumeracion1; // Ilegal en C++ y C++11; el tipo subyacente no puede ser determinado enum Enumeracion2 : unsigned int; // Legal en C++11, el tipo subyacente está especificado explícitamente enum class Enumeracion3; // Legal en C++11, el tipo subyacente es int enum class Enumeracion4 : unsigned int; // Legal en C++11. enum Enumeracion2 : unsigned short; // Ilegal en C++11, porque Enumeracion2 estaba declarado con un tipo subyacente diferente.


title: C++11

text: El parser del C++03 define “»” como el operador de desplazamiento derecho en todos los casos. Sin embargo, con declaraciones jerarquizadas de plantilla, hay una tendencia para que el programador descuide poner un espacio entre los dos paréntesis de ángulo derecho, causando por lo tanto un error de sintaxis del compilador.


title: C++11

text: C++11 mejorará la especificación del parser de modo que múltiples paréntesis de ángulo derechos sean interpretados, donde sea razonable, como cierre de la lista de argumentos de la plantilla. Esto puede ser sobreescrito usando paréntesis: template class AlgunTipo; std::vector2» x1; // Interpretado como un std::vector de AlgunTipo 2>, // lo cual NO es una sintaxis legal. 1 es true. std::vector2)» x1; // Interpretado como un std::vector de AlgunTipo, // Lo cual SÍ es una sintaxis legal en C++11. (1>2) es false.


title: C++11

text: C++03 agregó la palabra clave codice_85 como un modificador para prevenir que los constructores con un solo argumento fueran usados como operadores de conversión de tipo implícito. Sin embargo, esto no hace nada por los reales operadores de conversión. Por ejemplo, una clase puntero inteligente puede tener un codice_86 para permitir que actúe más como un puntero primitivo: si incluye esta conversión, puede ser probada con codice_87 (el cual sería true si el puntero no fuera null y de lo contrario false). Sin embargo, esto también permite otras conversiones no intencionales. Puesto que el bool de C++ es definido como tipo aritmético, puede ser implícitamente convertido a los tipos entero o aún a los tipos flotantes, lo que permite las operaciones matemáticas que no fueron pensadas por el usuario.


title: C++11

text: En C++11, la palabra clave codice_85 ahora puede ser aplicada a los operadores de conversión. Como con los constructores, previene el uso de funciones de conversión en conversiones implícitas. Sin embargo, contextos del lenguaje que específicamente requieren valor boleano, (las condiciones de sentencias if y en bucles, tan bien como operandos en operadores lógicos), como en conversiones explícitas y por lo tanto pueden usar a un operador de conversión bool.


title: C++11

text: En C++03, solo es posible definir un typedef como un sinónimo para otro tipo, incluyendo un sinónimo para una especialización de plantilla con todos los argumentos reales de la plantilla especificados. No es posible crear una plantilla de typedef como la siguiente: template  class AlgunTipo; template  typedef AlgunTipo TypedefName; // Ilegal en C++ Esto no compilará.


title: C++11

text: C++11 agregará esta capacidad con la siguiente sintaxis: template  class AlgunTipo;


title: C++11

text: template  using TypedefName = AlgunTipo; En C++11, la sintaxis también puede ser usada para alias de tipos: typedef void (*Tipo)(double); // Viejo estilo using Tipo = void (*)(double); // Nueva sintaxis introducida


title: C++11

text: En C++03 hay restricciones en qué tipos de objetos pueden ser miembros de una unión. Por ejemplo, las uniones no pueden contener objetos que definan a un constructor no trivial. C++11 suprime algunas de estas restricciones.


title: C++11

text: Éste es un simple ejemplo de una unión permitida en C++: //for placement new


title: C++11

text: struct Punto {


title: C++11

text: union U {


title: C++11

text: Los cambios no romperán ningún código existente puesto que solamente se relajan las reglas actuales.


title: C++11

text: Los identificadores codice_59 y codice_60 tienen un significado especial solo cuando son usados en un cierto contexto, de lo contrario pueden usarse como identificadores normales.


title: C++11

text: Estas características permiten al lenguaje hacer cosas que eran previamente imposibles, excesivamente verbosas, o requerían bibliotecas no portables.En C++11, las plantillas pueden tomar números variables de parámetros. Esto también permite la definición de funciones variadic tipo seguro.


title: C++11

text: C++03 ofrece dos clases de literales de string (cadena). La primera clase, contenida dentro de comillas dobles, produce un arreglo terminado en "null" de tipo codice_91. La segunda clase, definida como codice_92, produce un arreglo terminado en null de tipo codice_93, donde codice_94 es un carácter ancho. Ninguno de los tipos literales ofrece soporte para literales de string con UTF-8, UTF-16, o cualquier otra clase de codificaciones de Unicode.


title: C++11

text: Con el propósito de realzar en los compiladores de C++ el soporte de unicode, la definición del tipo codice_95 ha sido modificada para que tenga por lo menos el tamaño necesario para almacenar una codificación UTF-8 de ocho bits y lo suficientemente grande como para contener cualquier miembro del juego de caracteres de ejecución básicos del compilador. Anteriormente estaba definida solo como esto último.


title: C++11

text: Además de este cambio en la definición de "char", C++11 soportará tres codificaciones de Unicode: UTF-8, UTF-16, y UTF-32, y añadirá dos nuevos tipos de carácter: codice_96 y codice_97. Estos están diseñados para almacenar UTF-16 y UTF-32 respectivamente.


title: C++11

text: El ejemplo siguiente muestra cómo crear literales "string" para cada una de estas codificaciones: u8"I'm a UTF-8 string." u"This is a UTF-16 string." U"This is a UTF-32 string." El tipo del primer string es el habitual codice_98. El tipo del segundo string es codice_99 y el tipo del tercero es codice_100.


title: C++11

text: Al construir literales de string unicode, a menudo es útil insertar códigos de unicode directamente. Para ello, C++11 permitirá la siguiente sintaxis: u8"This is a Unicode Character: \u2018." u"This is a bigger Unicode Character: \u2018." U"This is a Unicode Character: \u2018." El número después del codice_101 es un número hexadecimal; sin necesidad del prefijo codice_102. El identificador codice_101 representa un código de unicode de 16 bits; para insertar un código de 32 bits, se usa codice_104 y un número hexadecimal de 32 bits. Solamente se admiten códigos válidos de Unicode. Por ejemplo, los valores en el intervalo U+D800-U+DFFF están prohibidos, pues están reservados para los pares sustitutos en las codificaciones UTF-16.


title: C++11

text: A veces también es útil evitar secuencias de escape de string manuales, particularmente al usar literales de archivos XML, lenguajes de scripting, o de expresiones regulares. C++11 proporcionará un literal de cadena "raw":


title: C++11

text: En el primer caso, todo entre codice_105 y codice_106 es parte del string. Los caracteres codice_107 y codice_108 no necesitan secuencia de escape. En el segundo caso, el codice_109 inicia la cadena, y solamente se termina al encontrar codice_110. El codice_111 puede ser cualquier literal de hasta 16 caracteres de longitud. Este no puede contener espacios, caracteres de control, o los caracteres "(", ")", o "\". El uso de este delimitador permite que el usuario tenga caracteres "codice_112" dentro de literales de cadena raw. Por ejemplo, codice_113 es equivalente a codice_114.


title: C++11

text: Los literales de cadena "raw" pueden combinarse con los prefijos de literal ancho o con cualquiera de los prefijos de literal unicode:


title: C++11

text: C++03 proporciona un número de literales. Los caracteres "codice_115" son un literal que es resuelto por el compilador como tipo codice_116 con el valor de 12.5. Sin embargo, la adición del sufijo "codice_117", como en "codice_118", crea un valor del tipo codice_119 que contiene el valor 12.5. Los modificadores de sufijo para los literales son fijados por la especificación del C++, y el código de C++ no puede crear nuevos modificadores literales.


title: C++11

text: C++11 también incluirá la capacidad para que el usuario defina nuevas clases de modificantes literales que construyan objetos basados en string de caracteres que el literal modifique.


title: C++11

text: La transformación de los literales es redefinida en dos fases distintas: raw y cooked (crudo y cocinado). Un literal raw es una secuencia de caracteres de un cierto tipo específico, mientras que el literal cocinado es de un tipo separado. El literal codice_120 de C++, como literal crudo, es esta secuencia de caracteres: codice_121, codice_122, codice_123, codice_124. Como literal cocinado, es el número entero 1234. El literal codice_125 de C++ en forma cruda es codice_126, codice_127, codice_128, mientras que en forma cocinada es el número entero 10.


title: C++11

text: Los literales pueden ser extendidos tanto en formas crudas y cocinadas, con la excepción de los literales de string, que solo se pueden procesar en forma cocinada. Esta excepción es debido al hecho de que los string tienen prefijos que afecten al significado y al tipo específicos de los caracteres en cuestión.


title: C++11

text: Todos los literales definidos por el usuario son sufijos; la definición de literales de prefijo no es posible.


title: C++11

text: Los literales definidos por el usuario que procesan la forma cruda del literal son definidos como sigue: OutputType operator "" _suffix(const char *literal_string);


title: C++11

text: OutputType some_variable = 1234_suffix; La segunda declaración ejecuta el código definido por la función literal definida por el usuario. A esta función se le pasa codice_129 como un string de estilo C, así que tiene un terminador null.


title: C++11

text: Un mecanismo alternativo para procesar literales de número entero y punto flotante crudos es a través de una plantilla variadic: template OutputType operator "" _suffix();


title: C++11

text: OutputType some_variable = 1234_suffix; OutputType another_variable = 2.17_suffix; Esto instancia la función de procesamiento literal como codice_130. En esta forma, no hay carácter null terminal en el string. El propósito principal para hacer esto es utilizar palabra clave codice_16 de C++11 y permitir al compilador que el literal sea transformado enteramente en tiempo de compilación, asumiendo que codice_132 es un tipo constexpr construible y copiable, y la función de procesamiento literal es una función codice_16.


title: C++11

text: Para los literales numéricos, el tipo de literal cocinado es codice_134 para literales enteros, o codice_135 para los literales de punto flotante. (Nota: No hay necesidad de tipos entero con signo porque un literal con prefijo de signo es parseado como expresión que contiene el signo como operador de prefijo unario seguido del número sin signo). No hay forma de plantilla alternativa: OutputType operator "" _suffix(unsigned long long); OutputType operator "" _suffix(long double);


title: C++11

text: OutputType some_variable = 1234_suffix; // usa la primera función OutputType another_variable = 3.1416_suffix; // usa la segunda función Para los literales de string, de acuerdo con los prefijos de string previamente mencionados, son usados: OutputType operator "" _suffix(const char * string_values, size_t num_chars); OutputType operator "" _suffix(const wchar_t * string_values, size_t num_chars); OutputType operator "" _suffix(const char16_t * string_values, size_t num_chars); OutputType operator "" _suffix(const char32_t * string_values, size_t num_chars);


title: C++11

text: OutputType some_variable = "1234"_suffix; // Llama la versión de la const char * OutputType some_variable = u8"1234"_suffix; // Llama la versión de la const char * OutputType some_variable = L"1234"_suffix; // Llama la versión de la const wchar_t * OutputType some_variable = u"1234"_suffix; // Llama la versión de la const char16_t * OutputType some_variable = U"1234"_suffix; // Llama la versión de la const char32_t * No hay forma alternativa de plantilla. Los literales de carácter son definidos similarmente.


title: C++11

text: El comité estándar de C++ planea estandardizar el soporte para la programación multihilo.


title: C++11

text: Hay dos partes implicadas: La primera parte es la definición de un modelo de memoria que permitirá que múltiples hilos coexistan en un programa, y la definición del soporte para la interacción entre los hilos. La segunda parte será proporcionada vía facilidades de la biblioteca. (Ver la sección de este artículo C++11#Facilidades de hilos).


title: C++11

text: El modelo de memoria define cuando los múltiples hilos pueden tener acceso a la misma posición de memoria, y especifica cuando las actualizaciones por un hilo llegan a ser visibles a otros hilos.


title: C++11

text: En un ambiente con multi hilo, es común que cada hilo tenga algunas variables únicas. Esto actualmente sucede para las variables locales de una función, pero no sucede para las variables globales y estáticas.


title: C++11

text: Para el estándar ha sido propuesto una nueva duración de almacenamiento de hilo local (thread-local), además de las existentes estático, dinámico y automático, (static, dynamic, automatic). El almacenamiento de hilo local será indicado por el especificador de almacenamiento codice_136.


title: C++11

text: Cualquier objeto que pudiera tener la duración de almacenamiento estático (es decir, perdurar durante toda la ejecución del programa) se le puede dar la duración de hilo local. Lo que se quiere es que como cualquier otra variable de duración estática, un objeto hilo local pueda ser inicializado usando un constructor y destruido usando un destructor.


title: C++11

text: En C++03, el compilador proporciona, para las clases que no lo proporcionan por sí mismas, un constructor por defecto (default), un constructor de copia, un operador de asignación de copia (codice_137), y un destructor. El programador puede sobreescribir estos comportamientos por defecto definiendo versiones personalizadas. C++ también define a varios operadores globales (tales como codice_137 y codice_139) que trabajan sobre todas las clases, y que el programador puede sobreescribir.


title: C++11

text: Sin embargo, hay poco control sobre la creación de estos comportamientos por defecto. Hacer una clase intrínsecamente no copiable, por ejemplo, requiere la declaración de un constructor de copia y de un operador de asignación privados y la no definición de ellos. El intentar usar estas funciones es una violación de la regla de una sola definición. Como no se requiere un mensaje de diagnóstico,ISO/IEC (2003). "ISO/IEC 14882:2003(E): Programming Languages - C++ §3.2 One definition rule [basic.def.odr]" para. 3 esto da lugar típicamente a un error del enlazador (linker).


title: C++11

text: En el caso del constructor default, el compilador no generará un constructor por defecto si una clase es definida con "cualquier" constructor. Esto es útil en muchos casos, pero es también útil para poder tener constructores especializados y el de defecto generado por el compilador.


title: C++11

text: C++11 permitirá el default y delete explícito de estas funciones miembro especiales. Por ejemplo, el tipo siguiente declara explícitamente que está usando al constructor default: struct SomeType {


title: C++11

text: Alternativamente, ciertas características pueden ser inhabilitadas explícitamente. Por ejemplo, el tipo siguiente es no copiable: struct NonCopyable {


title: C++11

text: El especificador codice_140 puede ser usado para prohibir llamar cualquier función, lo cual puede ser usado para rechazar la llamada de una función de miembro con parámetros particulares. Por ejemplo: struct NoInt {


title: C++11

text: Un intento de llamar a codice_141 con un codice_38 será rechazado por el compilador, en vez de realizar una conversión silenciosa a codice_116. Esto puede ser generalizado para rechazar la llamada de la función con cualquier tipo con excepción de doble, de la siguiente manera: struct OnlyDouble {


title: C++11

text: En C++03, el más grande tipo entero es codice_144. Está garantizado que tenga por lo menos tantos bits usables como codice_38. Esto resultaba en que codice_144 tuviera un tamaño de 64 bits en algunas implementaciones populares y 32 bits en otras. Para abordar este problema, C++11 agrega un nuevo tipo entero codice_147. Está garantizado que sea por lo menos tan grande como un codice_144, y que tenga no menos de 64 bits. El tipo fue originalmente introducido al C estándar con C99, y la mayoría de los compiladores de C++ ya lo soportan como extensión.


title: C++11

text: C++03 proporciona dos métodos para probar aserciones: el macro codice_149 y la directiva de preprocesador codice_150. Sin embargo, ninguno es apropiado para el uso en plantillas: el macro prueba la aserción en tiempo de ejecución, mientras que la directiva del preprocesador prueba la aserción durante el preprocesamiento, que sucede antes de la instanciación de las plantillas. Ninguno es apropiado para probar las propiedades que son dependientes de parámetros de plantillas.


title: C++11

text: La nueva utilidad introduce una nueva manera de probar aserciones en tiempo de compilación, usando la nueva palabra clave codice_151. La declaración asume la siguiente forma:


title: C++11

text: Aquí están algunos ejemplos de cómo puede ser usado el static_assert: static_assert ((GREEKPI > 3.14) && (GREEKPI < 3.15), "GREEKPI is inaccurate!"); template struct Check {


title: C++11

text: Cuando la expresión constante es codice_152 el compilador produce un mensaje de error. El primer ejemplo representa una alternativa a la directiva de preprocesador codice_150, en contraste, en el segundo ejemplo la aserción es chequeada en cada instanciación de la clase de plantilla codice_154.


title: C++11

text: Las aserciones estáticas también son útiles fuera de las plantillas. Por ejemplo, una implementación de un algoritmo pudiera depender de que el tamaño de un codice_155 fuera más grande que un codice_38, algo que el estándar no garantiza. Tal asunción es válida en la mayoría de los sistemas y de los compiladores, pero no todos.


title: C++11

text: En C++03, el operador sizeof puede ser usado en tipos y objetos. Pero no puede ser usado para hacer lo siguiente: struct SomeType { OtherType member; };


title: C++11

text: sizeof(SomeType::member); // No trabaja en C++03. Válido con C++11 Esto permite en C++11 retornar el tamaño de codice_157. C++03 no permite esto, así que es un error de compilación.


title: C++11

text: La implementación define si los objetos dinámicamente asignados que se vuelvan inalcanzables son reclamados automáticamente.


title: C++11

text: Un número de nuevas características serán introducidas en la biblioteca estándar del C++11. Muchos de estas características pueden ser implementadas bajo el estándar actual, pero algunas dependen, en mayor o menor medida, en nuevas características del núcleo de C++11.


title: C++11

text: Una gran parte de las nuevas bibliotecas son definidas en el C++ Technical Report 1 (Reporte Técnico 1 de C++) (llamado TR1), publicado en 2005. Están disponibles actualmente varias implementaciones completas y parciales del TR1 usando el namespace codice_158. Para C++11 serán movidas al namespace std. Sin embargo, a medida que las características del TR1 son llevadas a la biblioteca estándar de C++11, cuando sea apropiado, éstas son actualizadas con características del lenguaje de C++ que no estaban disponibles en la versión inicial del TR1. También, pueden ser mejoradas con las características que eran posibles debajo el C++03, pero no eran parte de la especificación original del TR1.


title: C++11

text: El comité se prepone crear un segundo reporte técnico (llamado TR2) después de que esté completa la estandardización de C++11. Las propuestas de biblioteca que no estén listas para C++11 serán puestas en el TR2 u otros reportes técnicos.


title: C++11

text: Las siguientes propuestas están en curso para el C++11.C++11 ofrece un número de nuevas características de lenguaje de las cuales se pueden beneficiar los actuales componentes de la biblioteca estándar. Por ejemplo, la mayoría de los containers (contenedores) de la biblioteca estándar pueden beneficiarse en la referencia Rvalue basada en el soporte del move constructor, tanto para mover rápidamente contenedores pesados alrededor, como para mover el contenido de esos contenedores a nuevas localizaciones de memoria. Los componentes de la biblioteca estándar serán actualizados con las nuevas características de lenguaje C++11 cuando sea apropiado. Estas incluyen, pero no se limitan necesariamente a:Adicionalmente, ha pasado mucho tiempo desde que C++ fue estandardizado. Se ha escrito una gran cantidad de código usando la biblioteca estándar; esto ha revelado porciones de las bibliotecas estándar que podrían usar alguna mejora. Entre las muchas áreas de mejoras que son consideradas son los allocators de la biblioteca estándar. Un nuevo modelo basado en ámbito (scope) de allocators será incluido en el C++11 para complementar el modelo actual.


title: C++11

text: Mientras que el lenguaje C++11 proporcionará un modelo de memoria que soporta hilos (threading), el soporte primario para usar realmente hilos vendrá con la biblioteca estándar del C++11.


title: C++11

text: Será proporcionada una clase de tipo hilo (codice_159). Para correr el nuevo hilo, esta clase tomará un objeto función y opcionalmente una serie de argumentos. Será posible hacer que un hilo se detenga hasta que otro hilo en ejecución termine, proporcionando soporte de thread joining a través de la función de miembro codice_160. De ser posible, también será proporcionado el acceso a los objetos nativos de hilo subyacentes para las operaciones específicas de la plataforma, por medio de la función de miembro codice_161.


title: C++11

text: Para la sincronización entre los hilos, serán agregadas a la biblioteca mutexes apropiados (codice_162, codice_163, etc) y variables de condición (codice_164 y codice_165). Esto será accesible con locks RAII (codice_166 y codice_167) y algoritmos de bloqueo (locking) para fácil uso.


title: C++11

text: Para el trabajo de bajo nivel de alto rendimiento, a veces es necesario la comunicación entre los hilos sin el overhead de los mutexes. Esto es alcanzado usando operaciones atómicas en localizaciones de memoria. Estas pueden opcionalmente especificar las restricciones de visibilidad de memoria mínimas requeridas para una operación. Las barreras de memoria explícitas también pueden ser usadas para este propósito.


title: C++11

text: La biblioteca de hilo del C++11 también incluirá futuros y promesas para pasar resultados asincrónicos entre los hilos, y el codice_168 para envolver (wrapping) una llamada de función que puede generar tal resultado asincrónico. La propuesta de futuros fue criticada porque carece de una manera de combinar futuros y comprobar la terminación de un interior de una promesa dentro de un conjunto de promesas.


title: C++11

text: Otras facilidades de hilo de alto nivel tales como thread pools han sido remitidas a un futuro informe técnico del C++. No serán una parte de C++11, pero su eventual implementación es esperada a ser construida enteramente en el tope de las características de la biblioteca de hilos.


title: C++11

text: La nueva facilidad codice_169 facility proporciona un método conveniente de correr tareas y de atarlas a un codice_170. El usuario puede elegir si la tarea debe correr asincrónicamente en un hilo separado, o sincrónicamente en un hilo que espere por el valor. Por defecto la implementación puede elegir, lo que proporciona una manera fácil de tomar ventaja de la concurrencia del hardware sin la sobresubscripción (oversubscription), y proporciona algunas de las ventajas de un thread pool para los usos simples.


title: C++11

text: Los tuples son colecciones compuestas por los objetos heterogéneos de dimensiones pre-arregladas. Un tuple puede ser considerado una generalización de un miembro de estructura de las variables.