Ich verwende Visual C ++ 2010, und hier ist mein Code-Snippet:
%Vor%Ich habe folgende Fehlermeldung erhalten, kann mir jemand helfen?
%Vor%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.)
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:
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)
Tags und Links c++ visual-studio-2010 c++11 compiler-errors decltype