aggregate-initialization

___ qstnhdr ___ Einheitliche Initialisierung einer atomaren Struktur? ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine völlig andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123c11 ___ C ++ 11 ist eine 2011 verabschiedete Version des C ++ - Sprachstandards. Sie hat viele Änderungen und Ergänzungen der Kernsprache sowie der verbesserten und erweiterten C ++ - Standardbibliothek vorgenommen. ___ answer24891452 ___

%code%

%code% hat einen Konstruktor, der einen Wert vom Typ S annimmt. Die Initialisiererliste {1, 2} wird aufgrund dieses Konstruktors implizit in ein temporäres S umgewandelt.

    
___ answer24893664 ___

Dies ist Clang Bug 18097 . Hier ist ein langer Thread, der das Problem diskutiert, der zu sein scheint, dass Clam nur skalare Typen unterstützt für %code% in %code% . Der C ++ 11-Standard besagt eindeutig (§29.5 / 1), dass %code% ein beliebig kopierbarer Typ sein kann.

Beide in der Frage gezeigten Verwendungen sollten mit diesem Konstruktor übereinstimmen

%Vor%

Die einzige Möglichkeit, die ich mir vorstellen kann, ist das Erstellen von %code% und das anschließende Initialisieren des Objekts mit %code% .

%Vor%     
___ qstntxt ___
%Vor%

Bearbeiten: Sowohl %code% als auch %code% arbeiten in g ++, beide funktionieren nicht beim Klonen. Gibt es einen Workaround für den Clang?

    
___ tag123uniforminitialization ___ Ein C ++ 11-Feature, mit dem geschweifte Klammern verwendet werden können, um einen beliebigen Typ von Variablen in einem beliebigen Kontext zu initialisieren ___ tag123aggregateinitialisierung ___ Die Aggregateinitialisierung ist eine Funktion von C ++, die die Initialisierung von Arrays und Aggregattypen mithilfe einer geschweiften Klammersyntax ermöglicht. ___ tag123atomic ___ Eine atomare Operation ist unteilbar. Dieser Begriff wird verwendet, um Transaktionen in Datenbanken, Low-Level-Zugriffe in Multithread-Programmen und Dateisystemoperationen zu beschreiben. ___
4
Antworten

Aggregation Initialisierung Sicherheit in C ++

Angenommen, ich habe die folgende Struktur: %Vor% Und wenn ich verwendet werde, möchte ich Variablen von sampleData type in einen bekannten Zustand initialisieren. %Vor% Später entscheide ich, dass ich zusätzliche Daten in meiner sam...
08.06.2011, 20:00
1
Antwort

Rufen leere Klammern den Standardkonstruktor oder den Konstruktor auf, der eine std :: initializer_list verwendet?

Das folgende Zitat stammt von Effective Modern C ++ (Seite 55):    "Angenommen, Sie verwenden einen leeren Satz Klammern, um ein Objekt zu konstruieren, das den Standardkonstruktor unterstützt, und unterstützt auch die std :: initializer_li...
07.07.2015, 20:11
2
Antworten

Einheitliche Initialisierung einer atomaren Struktur?

%Vor% Bearbeiten: Sowohl {{1, 2}} als auch ({1, 2}) arbeiten in g ++, beide funktionieren nicht beim Klonen. Gibt es einen Workaround für den Clang?     
22.07.2014, 15:11