c – decltype作为类成员函数中的返回类型

前端之家收集整理的这篇文章主要介绍了c – decltype作为类成员函数中的返回类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在下面的代码编译错误.
struct B{
    double operator()(){
        return 1.0;
    }
};

struct A {
    auto func() -> decltype(b())
    {
        return b();
    }

    B b;
};

但是,如果我重组A,它会编译.

gcc 4.8表示在这个范围内没有声明’b’.

struct A {
    B b;
    auto func() -> decltype(b())
    {
        return b();
    }
};

那么,第一个怎么了?

解决方法

对类的定义进行了两次处理:首先收集成员声明,​​包括函数签名,然后对定义的主体进行解析.

因此,函数体可以访问所有成员声明,​​包括后续的声明,但是函数原型只能看到前面的声明.

猜你在找的C&C++相关文章