C ++ 11 Compilerfehler bei Verwendung von declltype (var), gefolgt vom internen Typ von "var"

8

Ich verwende Visual C ++ 2010, und hier ist mein Code-Snippet:

%Vor%

Ich habe folgende Fehlermeldung erhalten, kann mir jemand helfen?

%Vor%     
Triumphant 15.01.2013, 03:36
quelle

2 Antworten

7

Dies ist ein Visual Studio Bug, der letztes Jahr bei Connect angesprochen wurde. Es ist Problem 757545 ("Decltype kann nicht vor dem Bereichsoperator verwendet werden") .

Das Problem hat einen Workaround, der genau wie @ iammillinds aufgeführt ist, außer dass es std::identity verwendet, das kurz vor der Veröffentlichung von C ++ 11 aus irgendeinem Grund aus <functional> entfernt wurde. ( std::common_type mit einem Vorlagenparameter ist äquivalent; std::remove_reference ist in einigen Fällen gleich.)

    
Lightness Races in Orbit 15.01.2013, 04:20
quelle
4

Ich sehe, dass mit der Version g ++ 4.7.2 der Code gut kompiliert wird. Es könnte also ein Compiler Bug in MSVS sein.
Vorläufig können Sie unten Trick versuchen:

%Vor%

Verwenden Sie es als:

%Vor%

Haftungsausschluss : Natürlich müssen Sie bei diesem Trick typename in Vorlagen verwenden. Dafür können Sie 1 weiteres Makro haben wie #define TDECLTYPE(VAR) typename DECLTYPE(VAR)

    
iammilind 15.01.2013 03:46
quelle