Was erbt C1x von C++?

Lesezeit: 2 Minuten

Benutzer-Avatar
Johannes Schaub – litb

Es ist allgemein bekannt, dass sowohl C++ Features von C übernimmt, aber dass C auch C++-Features standardisiert. C1x hat Temporäre mit vollem Ausdruck erhalten (zuvor hatte es nur Temporäre mit Sequenzpunkten). C1x hat auch von den C++11-Threading-Bemühungen profitiert.

Ich frage mich, welche anderen Funktionen C1x von C++ übernommen hat?

  • +1. Das weiß ich auch gerne.

    – Nawaz

    6. Dezember 2011 um 8:52 Uhr


  • Siehe auch stackoverflow.com/questions/3341001/…

    – Matt Tischler

    6. Dezember 2011 um 8:58 Uhr

  • Dieser Wikipedia-Artikel scheint ein netter Link zu sein. Allerdings weiß ich nicht, was die Motivation für die Existenz von C1x ist.

    – iammilind

    6. Dezember 2011 um 9:04 Uhr


  • Leute, diese Frage will nicht wissen “Wann wird es landen, was kann ich erwarten?”. Sie nehmen an, jemand weiß, welche dieser erwarteten Funktionen von C++ geerbt wurden! Ich habe zumindest keine Ahnung.

    – Johannes Schaub – litb

    6. Dezember 2011 um 9:17 Uhr


Benutzer-Avatar
justin

Einige Ähnlichkeiten sind:

  • statische Behauptungen: _Static_assert ( constant-expression , string-literal );
  • atomare Unterstützung
  • Unicode-Unterstützung – fügt einige Typedefs hinzu (z char16_t=uint_least16_t), Literale und Dienstprogramme.
  • _Generic

_Generic ist wirklich eher ein Überladen als das, was wir mit der Kraft von Vorlagen haben. Das allgegenwärtige Beispiel von _Generic ist:

#define cbrt(X) _Generic((X), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(X) 

..aber ich bin mir nicht sicher, welche ausdrücklich von C++ geerbt wurden.

  • Generika? Du meinst Vorlage?

    – Nawaz

    6. Dezember 2011 um 8:58 Uhr


  • @Nawaz: Nein, es heißt Generika und ist ein hässliches Feature, das verwendet werden soll, wenn das Überladen von Funktionen in C++ seit Jahren verwendet wird. ZB wenn Sie schreiben wollen sin(x) das Richtige zu nennen sin je nachdem ob x ist float, double oder long double.

    – Jakow Galka

    6. Dezember 2011 um 9:02 Uhr


  • @Nawaz ybungalobill hat das gut beantwortet =) aber ich werde ein Beispiel aufwerfen, um Verwirrung zu vermeiden.

    – justin

    6. Dezember 2011 um 9:07 Uhr

  • @ybungalobill: Danke für die Mini-Einführung. Kann das Generikum von C1x für die generische Implementierung von Datenstrukturen wie Stack, Queue usw. verwendet werden?

    – Nawaz

    6. Dezember 2011 um 9:10 Uhr


  • Wie Sie in Ihrem Beispiel sehen, mit _Generic, tgmath.h kann wieder in ISO C implementiert werden. Wie auch immer, es ist überhaupt nicht von C++ übernommen, im Gegensatz zu beispielsweise Atomic, das mit Blick auf C++ und C1x gemeinsam entwickelt wurde.

    – u0b34a0f6ae

    6. Dezember 2011 um 11:53 Uhr

Der Threading-Teil von C1x (5.1.2.4) ist fast wörtlich von C++11 übernommen. Begriffe wie “Konflikt” und “atomare Operationen” haben für alle praktischen Zwecke identische Definitionen.

Ausrichtung ist auch von C++11 inspiriert: das Schlüsselwort ist alignofund der maximal ausgerichtete Typ ist max_align_t (fallenlassen der std:: Namensraum natürlich).

1101700cookie-checkWas erbt C1x von C++?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy