Gibt es einen Funktionskopf, der einen abstrakten Typ legal zurückgibt?

8

Ich habe mich gefragt, ob das Folgende nach dem C ++ - Standard legal ist:

%Vor%

GCC 6.3 akzeptiert es, aber Clang 3.9 lehnt es ab.

Wenn ich das stattdessen tue:

%Vor%

Jetzt akzeptieren beide Compiler es. Sind beide in diesem Fall falsch?

    
Guillaume Racicot 02.02.2017, 18:34
quelle

1 Antwort

10

In [class.abstract], ziemlich einfach:

  

Eine abstrakte Klasse darf nicht als Parametertyp, als Funktionsrückgabetyp oder als Typ einer expliziten Konvertierung verwendet werden.

Jeder Code, der versucht, so etwas zu tun, ist schlecht geformt.

    
Barry 02.02.2017, 18:52
quelle