make_unique wird nicht kompiliert

8

Ich versuche make_unique für std::unique_ptr zu erstellen und zu verwenden, genauso wie std::make_shared für std::shared_ptr existiert hier beschrieben . Herb Sutter erwähnt die mögliche Implementierung von make_unique , die wie folgt aussieht:

%Vor%

Es scheint nicht für mich zu funktionieren. Ich verwende das folgende Beispielprogramm:

%Vor%

Und der Compiler (ich benutze VS2010) gibt mir die folgende Ausgabe:

%Vor%

Auch wenn Sie die make_unique Implementierung zu den folgenden ersetzen

%Vor%

(das stammt aus diesem Beispiel), kompiliert und funktioniert gut.

Kann mir jemand sagen, wo ist das Problem? Es scheint mir, dass VS2010 Probleme mit ... in der Vorlage-Deklaration hat, und ich weiß nicht, was ich dagegen tun kann.

    
Saage 14.12.2012, 17:51
quelle

2 Antworten

13

Variadic-Vorlagen sind in der freigegebenen Version von Visual C ++ 11 nicht verfügbar. Sie können jedoch die Argument-Erweiterung mit einer beliebigen Anzahl von Copy / Paste-Codes für verschiedene Parameter simulieren oder die gleichen Compiler-Tricks verwenden wie in Microsoft eigene Implementierung von "Pseudo-Variadics". Von diesem Kommentar auf Herb Sutters Blog: Ссылка

%Vor%     
Bret Kuhns 14.12.2012, 18:03
quelle
5

Laut MSDN werden variadische Vorlagen in Visual C ++ 2010 oder 2012 nicht unterstützt .

    
Mike Seymour 14.12.2012 17:55
quelle