"Standardkonstruktor kann nicht referenziert werden" in Visual Studio 2015

8

Ich stehe in Visual Studio 2015 vor einer wirklich seltsamen Fehlermeldung. Der folgende abgespeckte Code:

%Vor%

kompiliert ohne Probleme auf Clang. Visual Studio 2015 IntelliSense gibt jedoch die folgende Fehlermeldung:

%Vor%

Fehle ich etwas in meinem Code oder ist das ein Fehler in Visual Studio?

AKTUALISIEREN

Aufgrund der Kommentare und Antworten hier habe ich einen Fehlerbericht zu Microsoft Connect geöffnet.

    
plasmacel 29.11.2015, 00:51
quelle

1 Antwort

7

Dies ist ein Intellisense-Fehler. Sowohl clang als auch gcc akzeptieren diesen Code, auch webcompiler ein online Visual C ++ Compiler akzeptiert diesen Code .

Der Entwurf C ++ 14 Standardabschnitt 12.1 [class.ctor] besagt, dass ein Standardkonstruktor für eine Klasse standardmäßig gelöscht wird, wenn:

  
  • X ist eine Union-ähnliche Klasse, die ein Variantenmitglied mit einem nicht-trivialen Standardkonstruktor
  • hat   
  • Jedes nicht statische Datenelement ohne geschweiften oder gleichwertigen Initialisierer ist vom Referenztyp
  •   
  • jedes nicht-variante nicht statische Datenelement vom Typ const-qualifiziert (oder Array davon) ohne "brace-orequal-initializer" hat kein a   Vom Benutzer bereitgestellter Standardkonstruktor,
  •   
  • X ist eine Union und alle Variantenmitglieder sind vom Typ const (oder Array davon),
  •   
  • X ist eine nicht gewerkschaftliche Klasse und alle Mitglieder eines anonymen Gewerkschaftsmitglieds sind vom Typ const-qualifiziert (oder ein Array davon),
  •   
  • Jedes potentiell konstruierte Unterobjekt mit Ausnahme eines nicht statischen Datenelements mit einem brace-or-equal-initializer hat den Klassentyp M (oder Array)   davon) und entweder M hat keinen Standardkonstruktor oder Überladung   Die Auflösung (13.3), die auf den Standardkonstruktor von M angewendet wird, führt zu einem   Mehrdeutigkeit oder in einer Funktion, die gelöscht oder nicht zugänglich von der   standardmäßig default constructor oder
  •   
  • Jedes potentiell konstruierte Unterobjekt hat einen Typ mit einem Destruktor, der aus der Standardvorgabe gelöscht oder nicht zugänglich ist   Konstruktor.
  •   

keiner von denen gilt hier.

Aktualisieren

Im Fehlerbericht, der vom OP eingereicht wurde , lautet die Antwort:

  

Danke, dass Sie dieses Problem gemeldet haben. Fix sollte in der nächsten Aktualisierung von Visual Studio 2015 verfügbar sein.

    
Shafik Yaghmour 29.11.2015, 01:06
quelle

Tags und Links