Keine ADL innerhalb von declltype auf VS2012

8

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?

    
mmmmmmmm 16.07.2013, 11:01
quelle

2 Antworten

2

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.

    
Andrew Tomazos 16.07.2013 19:26
quelle
2

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.

%Vor%

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.

    
Pixelchemist 16.07.2013 19:58
quelle