decltype as a return type in class member function

后端 未结 3 1309
隐瞒了意图╮
隐瞒了意图╮ 2020-12-01 18:42

I got error compiling below code.

struct B{
    double operator()(){
        return 1.0;
    }
};

struct A {
    auto func() -> decltype(b())
    {
             


        
3条回答
  •  遥遥无期
    2020-12-01 19:21

    Is it valid?

    Your last example is well-formed, while the first one is not (so GCC is correct).

    Paragraph 3.4.1/7 on unqualified name lookup specifies:

    A name used in the definition of a class X outside of a member function body, default argument, brace-or- equal-initializer of a non-static data member, or nested class definition shall be declared in one of the following ways:

    before its use in class X or be a member of a base class of X (10.2), or

    — [...]

    And what follows are other conditions that do not apply in your case.

提交回复
热议问题