2012-07-05 10 views
6

Czy używanie funkcji decltype z wskaźnikami funkcji wirtualnego członka jest zgodne z prawem?Używanie typu decltype ze wskaźnikami funkcji wirtualnego członka

Poniższy kod powoduje wygenerowanie wewnętrznego błędu (C1001) za pomocą VS2012.

struct C 
{ 
    virtual void Foo() {} 

    typedef decltype(&C::Foo) type; //pointer 
} 

Ale to kompiluje grzywny:

struct C 
{ 
    virtual void Foo() {} 

    typedef decltype(C::Foo) type; //not pointer 
} 

Czy to błąd?

+9

To było "nielegalne", wygenerowałoby komunikat o błędzie, a nie błąd wewnętrzny. Najwyraźniej znalazłeś błąd w kompilatorze. – AnT

+3

@AndreyT: +1, chciałbym dodać, że: * nawet jeśli było to nielegalne, nie powinno powodować błędu wewnętrznego *. –

Odpowiedz

Powiązane problemy