MSVC12 denkt, dass das von std :: array abgeleitete Aggregat kein Pod ist

8

Gegeben die folgenden

%Vor%

Die folgenden Compiler stimmen zu, dass litmus pod:

ist

MSVC12 (VS2013 RTM) behauptet jedoch, dass die zweite Assert fehlschlägt.

  1. Wer hat Recht?
  2. Gibt es einen Trick, damit MSVC die Klasse als Pod behandelt?
  

BEARBEITEN Zur Information: is_trivially_copyable<litmus> gibt True-Ness auf MSVC zurück. Dies könnte für viele Fälle nützlich sein, in denen die tatsächliche POD-Einheit nicht unbedingt erforderlich ist.

    
sehe 07.01.2014, 09:37
quelle

1 Antwort

8
  1. GCC und Clang; Diese Klasse ist POD.

  2. Das hängt davon ab, was genau du meinst "make MSVC behandelt die Klasse als Pod". Wenn Sie die Interna des Compilers meinen, dann nein. Sie können jedoch (in der Praxis) das Merkmal für litmus spezialisieren:

    %Vor%

    Beachten Sie, dass das streng normierte Verhalten zu undefiniertem Verhalten führt (Danke @ R.MartinhoFernandes, um dies zu verdeutlichen). Als compilerspezifische Problemumgehung würde ich jedoch erwarten, dass es funktioniert. Verwenden Sie ohne Garantie.

Angew 07.01.2014, 09:54
quelle

Tags und Links