virtuelle Vererbung mit kovariantem Rückgabetyp und einem Template-Klassenargument, LINK-Fehler in vs2013

8

Das ist mein Code:

%Vor%

Visual C ++ 2013 hat mir einen Linkfehler gegeben.

%Vor%

Ich habe gcc versucht, und es kompiliert.

Wenn ich eines der folgenden Dinge mache, kompiliert VC:

  1. Ändern Sie die Zeile (1) in einen Nicht-Template-Typ
  2. entferne das "virtuelle" in der Zeile (2)
  3. Ändern Sie den Rückgabetyp zu A & amp; in der Zeile (3)
  4. Kommentar zur Zeile (4)

Warum?

    
wuwenbin 25.09.2014, 15:22
quelle

1 Antwort

0

Dies ist wahrscheinlich ein VC-Fehler in der Tat; Clang und G ++ akzeptieren beide diesen Code. Interessanterweise beseitigt das Ändern des Codes, um keine Initialisiererliste in dem Aufruf von B.test() wie unten auch zu verwenden, den Fehler, was zu der Annahme führt, dass ein Problem mit der VC ++ Initialisierungslisten-Unterstützung besteht verursacht dies.

%Vor%     
LThode 30.10.2014 14:29
quelle