Ich habe gerade festgestellt, dass der Versuch, den Rückgabetyp einer Funktion über declltype zu erhalten, nicht ADL (argument-dependent-lookup) auf VS2012 (getestet mit cl.exe V17.00.60610.1) beinhaltet.
Das folgende Beispiel
%Vor%Gibt
%Vor%auf VS2012
aber (was erwartet wird):
%Vor%auf gcc 4.7.3.
Also funktioniert ADL beim Aufruf der Funktion (Zeile 1 in der Ausgabe), aber nicht, wenn sie innerhalb von declltype in VS2012 verwendet wird.
Oder fehlt mir ein anderer Punkt?
Ein minimaler Testfall ist:
%Vor%Wenn der Compiler ADL innerhalb von declltype nicht unterstützt, wird das obige nicht kompiliert.
Mir wurde gesagt, dass es kompiliert, also ist vielleicht die Interaktion zwischen ADL und Template Instanziierung das Problem.
Wenn es lustig ist, dass die IDE / Intellisense das Nachschlagen korrekt zu tun scheint, aber der Compiler nicht.
Dieses Beispiel zeigt keine Intellisense-Fehler und a
wird vom Typ size_t
angezeigt, wenn Sie den Mauszeiger darüber halten.
Der Compiler stoppt mit Error C2182
und beschwert sich über eine Variable vom Typ void.
Es scheint ein Problem unabhängig von Vorlagen zu sein.
Tags und Links c++ c++11 visual-studio-2012 decltype argument-dependent-lookup