前端之家收集整理的这篇文章主要介绍了
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();
}
};
那么,第一个怎么了?
对类的定义进行了两次处理:首先收集成员声明,
包括函数签名,然后对定义的主体进行解析.
因此,函数体可以访问所有成员声明,包括后续的声明,但是函数原型只能看到前面的声明.
原文链接:https://www.f2er.com/c/111529.html