6

decltype与虚拟成员函数指针一起使用是否合法?

以下使用 VS2012 生成内部错误 (C1001)。

struct C
{
    virtual void Foo() {}

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

但这编译得很好:

struct C
{
    virtual void Foo() {}

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

它是一个错误吗?

4

1 回答 1

4

decltypeMSVC对成员函数指针有多个已知问题;另请参阅将 decltype 与成员函数指针一起使用

这是合法的语法;g++ 对此非常满意(http://ideone.com/sTZi6)。标准中没有限制decltype成员函数的操作。

于 2012-07-05T17:18:01.787 回答